Objective c 延迟XCTest中所有单元测试的执行
我需要我的单元测试来等待我们的子系统初始化,这通常需要几秒钟。为了等待,我可以在测试中执行以下操作Objective c 延迟XCTest中所有单元测试的执行,objective-c,unit-testing,testing,xctest,Objective C,Unit Testing,Testing,Xctest,我需要我的单元测试来等待我们的子系统初始化,这通常需要几秒钟。为了等待,我可以在测试中执行以下操作 - (void)testReverseActionWithOffset { XCTestExpectation *expectation = [self expectationWithDescription:@"High Expectations"]; // Wait for proper initialization of Realm and CrimsonObject sys
- (void)testReverseActionWithOffset
{
XCTestExpectation *expectation = [self expectationWithDescription:@"High Expectations"];
// Wait for proper initialization of Realm and CrimsonObject system...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
问题是,使用这种技术,我必须在每一种测试方法中进行等待。这导致每次测试之间有两秒钟的延迟,即使在系统启动后也是如此。因为测试方法是以不确定的顺序运行的,所以我不能把延迟放在一个方法中。在XCTest下处理此问题的正确方法是什么
因为测试方法是以不确定的顺序运行的,所以我不能把延迟放在一个方法中
每次测试之间需要做的任何事情都可以在或中完成
如果需要对每个XCTestCase
执行一次操作,可以使用类方法或。第一个在运行任何测试之前运行,第二个在所有测试之后运行
通过旋转运行循环,您可以在这些方法中的任何一种中执行非阻塞等待:
+ (void)setUp
{
while( /* subsystems not ready */ ){
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}
}
问题是,就我在测试中所见,没有办法延迟使用这些方法。期望似乎没有效果,如果您完全执行sleep(),它会延迟主线程,因此我的加载不会初始化(这是我首先等待的)。如果你知道解决这个问题的方法,请告诉我。谢谢要执行非阻塞等待,您可以旋转运行循环,直到满足您的条件:
while(/*subsystem not ready*/){[[nsrunlop main runloop]rununteldate:[NSDate dateWithTimeIntervalSinceNow:0.5]];}
我应该注意,我忍不住觉得我在回答您的问题,而牺牲了解决您的问题。我不太确定这里的正确答案是什么。我不知道你可以从线程内继续使用主线程!这很有效。你能把这个加到答案里吗?我接受(void)根据该请求设置{while(){[[nsrunlop main runloop]rununteldate:[NSDate datewithtimeintervalncenconow:.1f]];}}}nm!不知道我有权编辑其他人的答案。谢谢你的帮助!很高兴我能帮忙。关于代码的一个小提示:NSTimeInterval
是一个double
,而不是float
。在这种情况下,f
后缀不正确。