[英]How to cause Xcode unit-tests to fail and not crash in case of an uncaught exception?
[英]How to cause Xcode 5 unit tests to fail early?
我正在Xcode 5中運行SenTestKit單元測試(實際上,它們是與KIF 2的集成測試,但這等同於同一件事)。 這些測試需要很長時間才能運行。 有沒有辦法使整個測試套件在第一次測試失敗時失敗?
您可以通過在每個測試用例的開始處調用[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
以便在終止測試套件之前有時間捕獲測試輸出。
您可以簡單地使用一個標志,但是在這種情況下,當您使用KIF進行測試時,應該仔細照顧UI元素。 對KIF的一個很好的擴展是一種在給定元素存在的情況下返回true的方法。 如果應該,但是不設置標志。 然后,您可以簡單地通過檢查標志來啟動所有測試用例。 如果您需要使用該方法的幫助,請詢問! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.