Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?

Posted

技术标签:

【中文标题】Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?【英文标题】:Xcode UI Tests - Stop testing when any given test in the test suite fails? 【发布时间】:2018-03-26 21:03:24 【问题描述】:

我希望以这样一种方式运行我的 UI 测试,即如果测试套件中的任何给定测试失败,整个测试运行就会停止。我知道有一个选项可以在失败后继续,但这仅适用于单个测试用例。

我计划在诸如 Teamcity 之类的 CI 服务器上运行 UI 测试,如果任何测试失败,我自然希望构建过程失败,而不必等待其余测试完成。有谁知道这是否可能,或者我是否需要以某种方式解析每个测试用例的输出以检测故障并在该点停止,可能带有一些退出代码?

谢谢。

【问题讨论】:

【参考方案1】:

我真的建议您为此使用fastlane。您可以在那里配置您的测试,因为fastlane 有一个名为stop_after_first_error 的特定标志,它基本上可以满足您的需求!

您可以在这里找到它: https://github.com/fastlane/fastlane

【讨论】:

stop_after_first_errorsnapshot 而不是 scan【参考方案2】:

我认为本地没有任何方法可以做到这一点。您可能需要重新考虑如何编写 UI 测试,因为您不应该这样做。话虽如此,这是您可以做的事情;这可能是一个黑客攻击。

创建一个布尔标志,如lastTestPassed。当断言为真时,将标志设置为真。然后,在setUp 方法中,检查lastTestPassed 是否为真。如果是,则将其设置为 false;如果不是,则不允许运行测试(可能使用XCTFail())。

同样,这有点像 hack,但在您重构 UI 测试的工作方式之前可能会奏效。

【讨论】:

以上是关于Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?的主要内容,如果未能解决你的问题,请参考以下文章

XCode 7 中的 UI 测试文档 [关闭]

Xcode 中的批量 UI 测试

想要在 Xcode 中的 UI 测试期间在测试运行后停止调试控制台清除

Xcode 7 中的特定 UI 测试

我的 XCode UI 测试如何检测到屏幕发生了变化?

Xcode UI 测试不会自动启动模拟器