簡體   English   中英

如何使Xcode 5單元測試過早失敗?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM