当存在多个测试类时,Xcode iOS UI 测试使用 SIGABRT 崩溃

Posted

技术标签:

【中文标题】当存在多个测试类时,Xcode iOS UI 测试使用 SIGABRT 崩溃【英文标题】:Xcode iOS UI tests crash with SIGABRT when multiple test classes exist 【发布时间】:2016-03-19 20:49:51 【问题描述】:

我正在使用 XCUITest 方法开发一个 ios 应用程序来测试界面。我在第一个文件 AppUITests.swift 中设置了一个基本的 UI 测试,该文件将 let app = XCUIApplication() 作为 XCTestCase 子类的成员,然后在 setUp() 方法中进行 app.launch()。此文件中的测试一切顺利。

我想在应用程序的第一个主要“模式”中为 UI 测试创建一个新的测试套件,所以我创建了一个新文件 MainModeUITests.swift 并复制了相同的代码。我的计划当然是在这种模式下测试 UI 工作流,但是在这个新文件中,应用程序在调用 XCUIApplication() 的行处以 signal SIGABRT 崩溃。

目前我正在模拟器上进行测试,甚至还没有进行设备测试。任何想法为什么 SIGABRT 会被 UITesting 扔给应用程序?为什么我不能在不同的测试套件中调用它?有没有办法将 UI 测试分成多个 swift 文件?

【问题讨论】:

【参考方案1】:

我想通了:我有两个目标(一个用于单元测试,另一个用于 UI 测试)。我不小心将 UI 测试文件添加到非 UI 测试目标中,因此当从两个目标运行测试时,XCUIApplication() 方法试图以不使用 XCUITest 的单元测试的方式访问应用程序,不喜欢。解决方案:从其他测试目标的“编译源”中删除所有 XCUITest 源。

【讨论】:

以上是关于当存在多个测试类时,Xcode iOS UI 测试使用 SIGABRT 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

我可以并行运行多个 iOS UI 测试吗?

Xcode 8:UI 测试找不到正在测试的库

XCode 7 UI 测试 - 可用的操作

如何在现有的 ios 测试项目中启用 xcode 7 UI 测试

Xcode UI 测试无法编辑多个 UITextFields

xcode 8 执行 UI 测试用例有啥命令吗?