2

如果遇到致命错误,如何停止 Xcode iOS 单元测试?

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

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

4

4 回答 4

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
}
于 2016-05-20T06:46:23.353 回答
2

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

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

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

  1. 单击断点(左面板 ... Command + 7)
  2. 点击+(左下角)
  3. 点击“测试失败断点”

Xcode 单元测试失败断点

参考

于 2017-09-01T14:09:09.820 回答
1

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

Matt Gallagher 对此有一个很好的解决方案,他在这篇博文中进行了介绍。

于 2016-05-20T06:41:39.323 回答
-1

在任何地方都编写安全代码是一种很好的做法,包括单元测试。

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

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

var optionalVariable: Int?
XCTAssertNotNil(optionalVariable)

我建议将其添加到setUp()

这样,您的测试将在 Xcode 崩溃之前停止,您无需设置任何断点。

于 2018-04-10T16:07:58.417 回答