Pha*_*ast 9 xcode unit-testing xcode5
在失败的断言时,Xcode不会终止测试例程.它是否正确?我无法理解这背后的原因,我希望它表现得像assert
并让它终止程序.通过以下测试,它将打印"仍在运行".这是有意的吗?
- (void)testTest
{
XCTAssertTrue(false, @"boo");
NSLog(@"still running");
}
Run Code Online (Sandbox Code Playgroud)
我不知道这将如何有用,因为当前提条件不满足时,后续代码通常会崩溃:
- (void)testTwoVectors
{
XCTAssertTrue(vec1.size() == vec2.size(), @"vector size mismatch");
for (int i=0; i<vec1.size(); i++) {
XCTAssertTrue(vec1[i] == vec2[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*k R 10
你可以改变这种行为XCTAssert<XX>
.
在设置方法中将值更改self.continueAfterFailure
为NO.
IMO在测试断言失败后停止测试是更好的行为(防止崩溃导致不运行其他重要测试).如果测试需要在失败后继续,这意味着测试用例只需要很长时间就可以拆分.
是的,这是有意的。这就是单元测试的工作原理。测试失败并不终止测试;它只是未通过测试(并如此报告)。这很有价值,因为您不想仅仅因为一项测试失败而失去其他测试是否通过的信息。
如果(正如您在补充中所说)测试方法然后继续抛出异常,那么它会抛出异常 - 而且您知道为什么。但是异常被捕获了,那么问题出在哪里呢?其他测试方法仍然运行,因此您的结果仍然符合您的预期:一种方法测试失败然后停止,其他测试执行它们所做的任何事情。然后你会在日志中看到类似这样的内容:
Executed 7 tests, with 2 failures (1 unexpected) in 0.045 (0.045) seconds
Run Code Online (Sandbox Code Playgroud)
第一个失败是 XCTAssert。第二个是例外。
归档时间: |
|
查看次数: |
1880 次 |
最近记录: |