2014-02-11 40 views
1

我正在Xcode 5中運行SenTestKit單元測試(實際上,它們是與KIF 2的集成測試,但它相當於同樣的事情)。這些測試需要很長時間才能運行。有沒有辦法讓整個測試套件在第一次測試失敗時失敗?如何使Xcode 5單元測試早日失敗?

回答

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以便有時間終止測試套件之前捕捉到測試輸出。

0

您可以簡單地使用一個標誌,但在這種情況下,您應該在使用KIF進行測試時仔細照看UI元素。對KIF的一個很好的擴展是一個方法,如果給定的元素存在,它將返回true。如果應該但它不會然後設置標誌。 然後,您可以簡單地啓動所有測試用例並檢查標誌。 如果您需要該方法的幫助,只需詢問! :)