iOS 单元测试包:为啥要启动该应用程序?

Posted

技术标签:

【中文标题】iOS 单元测试包:为啥要启动该应用程序?【英文标题】:iOS Unit Testing Bundle: Why Is The App Launched?iOS 单元测试包:为什么要启动该应用程序? 【发布时间】:2018-03-19 15:27:51 【问题描述】:

我已将一个单元测试目标和一个 UI 测试目标添加到我的应用程序项目中。当我运行单元测试时,我的应用程序就会启动。当我运行 UI 测试时,我的应用程序的“特殊 Runner 版本”会启动。我(几乎)理解运行器版本用于产生用户操作。但是为什么在运行单元测试时会启动我的应用程序?这意味着我的单元测试可以与正在运行的应用程序交互,但似乎并非如此。整个 XCTest 环境对我来说是新的。任何澄清都会很棒。谢谢。

【问题讨论】:

【参考方案1】:

我错了。单元测试确实可以访问正在运行的应用程序。我添加了以下测试方法,它成功打印了我的应用程序页面视图控制器的列表和地图视图控制器属性:

    func testAppAccess() 
        if let pageVC = UIApplication.shared.keyWindow?.rootViewController?.childViewControllers[0] as? PageViewController 
            print(pageVC.listViewController)
            print(pageVC.mapViewController)
        
        else  print("Could not obtain the application's page view controller") 
    

【讨论】:

以上是关于iOS 单元测试包:为啥要启动该应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

单元测试目标中的 xcode RunUnitTests 脚本?

无法将单元测试添加到现有 iOS 项目

为啥 Xcode 找不到我的单元测试应用程序?

UI 中的动态数据的 UI 单元测试失败:iOS

为啥我必须切换纹理单元才能让我的片段着色器识别要使用的纹理?

IOS为啥对一个类调用ViewController进行单元测试