如果遇到致命错误,如何停止 Xcode iOS 单元测试?
那是在我有 10 个单元测试的情况下,但它为单元测试编号 5 调用的代码碰巧有一个编码问题(** 在这种情况下,编码问题是在测试用例和设置代码中**)并且正在抛出一个致命错误。因此,在这种情况下,单元测试会停在那里,并且不会继续该测试类中的其他测试用例。
(不确定这是否是良好单元测试的预期操作/流程?)
如果遇到致命错误,如何停止 Xcode iOS 单元测试?
那是在我有 10 个单元测试的情况下,但它为单元测试编号 5 调用的代码碰巧有一个编码问题(** 在这种情况下,编码问题是在测试用例和设置代码中**)并且正在抛出一个致命错误。因此,在这种情况下,单元测试会停在那里,并且不会继续该测试类中的其他测试用例。
(不确定这是否是良好单元测试的预期操作/流程?)
尝试
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
}
我遇到的一个相关问题是在单元测试失败时使用断点停止单元测试,这样我就可以看到问题,而无需单击或滚动大量测试输出。
制作单元测试失败断点很简单,但并不容易找到。
Xcode 8+ 有一个可以添加的新断点,称为“测试失败断点”。
对此没有简单的解决方法。在未捕获(objc)异常或失败assert
的情况下,运行单元测试的进程确实收到了 mach 异常或 unix 信号。
Matt Gallagher 对此有一个很好的解决方案,他在这篇博文中进行了介绍。
在任何地方都编写安全代码是一种很好的做法,包括单元测试。
关于您的问题,正如 Oleg Danu 回答的那样,您应该设置continueAfterFailure = false
.
下一步是在测试崩溃之前添加以下内容。
var optionalVariable: Int?
XCTAssertNotNil(optionalVariable)
我建议将其添加到setUp()
这样,您的测试将在 Xcode 崩溃之前停止,您无需设置任何断点。