如果fatalerror被击中,如何停止Xcode iOS单元测试?

时间:2016-03-11 01:18:25

标签: ios xcode unit-testing xctest xctestcase

如果遇到fatalerror,我如何停止Xcode iOS单元测试?

在我有10个单元测试的情况下,但是它发生了它为单元测试5号调用的代码有编码问题(在这种情况下**编码问题是在测试用例和设置代码**中)和抛出致命错误。因此,在这种情况下,单元测试在那里停止,并且不继续该测试类中的其他测试用例。

(不确定这是否是良好单元测试的预期操作/过程?)

4 个答案:

答案 0 :(得分:7)

尝试

override func setUp() {
    super.setUp()
    // Put setup code here. This method is called before the invocation of each test method in the class.

    continueAfterFailure = false
}

答案 1 :(得分:1)

没有简单的解决方法。在未捕获(objc)异常或失败的assert的情况下,运行单元测试的进程确实接收到mach异常或unix信号。

Matt Gallagher为此提供了一个很好的解决方案,他提出了in this blog post

答案 2 :(得分:1)

我遇到的一个相关问题是当它失败时用断点停止单元测试,这样我就可以看到问题,而不必点击或滚动大量的测试输出。

单元测试失败断点很简单,但不容易找到。

Xcode 8+有一个新的断点可以添加,称为"测试失败断点"。

  1. 单击断点(左侧面板...命令+ 7)
  2. 点击+(左下角)
  3. 点击"测试失败断点"
  4. Xcode Unit Test Failure Breakpoint

    参考

答案 3 :(得分:0)

最好在任何地方编写安全代码,包括单元测试。

关于你的问题,正如Oleg Danu回答的那样,你应该设置continueAfterFailure = false

下一步是在测试崩溃之前添加以下内容。

var optionalVariable: Int?
XCTAssertNotNil(optionalVariable)

我建议将其添加到setUp()

通过这种方式,您的测试将在崩溃Xcode之前停止,并且您不需要设置任何断点。