我有一个测试套件,其中有许多测试类,每个测试类都有很多测试。 现在,如果我定义
+ (void)tearDown
在任何类中,然后它将仅在该类的所有测试之后运行。 和
- (void)tearDown
每次测试后都会运行。 我想定义一个tearDown方法,并希望它在所有类的所有测试之后运行。 Fox,例如,如果我有5个类,每个类每个都有7个测试。所以我想在所有35次测试后运行这个tearDown函数。
答案 0 :(得分:0)
如果我正确理解了您的问题,您可以使用completion block methods
使用全局变量/标记来记录每个方法的完成情况,如下所示:
+ (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion {
if (completion) {
completion(finished);
}
}
请查看this以获得更好的解释。
然后创建一个方法,检查是否执行了所有任务并在需要时运行最终测试,如下所示:
- (void)finalTest {
if (CHECK GLOBAL FLAG FOR COMPLETION OF OTHER TASKES) {
// do final test
} else {
// repeat check after 0.1 seconds
[self performSelector:@selector(finalTest)
withObject:nil
afterDelay:0.1];
}
}
答案 1 :(得分:0)
由于您正在寻找在所有测试完成后调用__gcov_flush()的方法,请参阅https://qualitycoding.org/ios-7-code-coverage/。 Google Toolbox for Mac的最新代码显示了如何使用测试观察器执行此操作,以及SenTestingKit和XCTest的版本。