我在 Xcode 5 中运行 SenTestKit 单元测试(实际上,它们是与 KIF 2 的集成测试,但它相当于同一件事)。这些测试需要很长时间才能运行。有没有办法让整个测试套件在第一次测试失败时失败?
问问题
207 次
2 回答
1
[self raiseAfterFailure]
您可以通过在每个测试用例开始时调用来中止对第一个 SetTestKit 测试失败的测试。但是,这不适用于 KIF 2。
我最终SenTestObserver
像这样子类化:
@interface TestObserver : SenTestObserver
@end
@implementation TestObserver
+ (void)load {
[[NSUserDefaults standardUserDefaults] setValue:@"SenTestLog,TestObserver"
forKey:SenTestObserverClassKey];
}
+ (void)testCaseDidFail:(NSNotification *)notification {
// Fail fast
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
exit(1);
});
}
@end
编辑添加dispatch_after
,以便在终止测试套件之前有时间捕获测试输出。
于 2014-02-26T17:27:28.300 回答
0
您可以简单地使用一个标志,但在这种情况下,当您使用 KIF 进行测试时,您应该仔细照顾 UI 元素。KIF 的一个很好的扩展是如果给定元素存在则返回 true 的方法。如果应该但它没有然后设置标志。然后,您可以简单地通过检查标志来启动所有测试用例。如果您需要有关该方法的帮助,请询问!:)
于 2014-02-25T07:34:21.273 回答