1
A
回答
2
您可以使用信号量等到您从异步调用中获得结果。
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
// Do your async call here
// Once you get the response back signal:
[self asyncCallWithCompletionBlock:^(id result) {
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
0
在您的-setup
方法中,使用上面的信号量或使用dispatch_group。 dispatch_group是我的首选方法。
@implementation XCTTestSubClass()
{
dispatch_group_t _dispatchGroup;
}
@end
-(id)init
{
_dispatchGroup = dispatch_group_create();
return [super init];
}
-(void)setup
{
dispatch_group_async(_dispatchGroup, dispatch_get_current_queue(), ^{
//your setup code here.
});
}
然后覆盖-invokeTest
并确保组块(设置)已完成运行。
-(void)invokeTest
{
dispatch_group_notify(group, dispatch_get_current_queue(), ^{
[super invokeTest];
});
}
这保证了-setup
完成后的测试才会运行。
相关问题
- 1. 在异步void完成后运行void
- 2. 异步方法测试
- 3. 如何测试在主线程上运行异步的方法?
- 4. 从非异步方法在并行中运行异步方法
- 5. 启动完成后的运行方法
- 6. 单元测试setUp/tearDown是否在异步测试中工作?
- 7. Facebook JavaScript API:异步调用完成后运行一行代码
- 8. 为每个测试套件运行setUp()和tearDown()方法InstrumentationTestCase Android
- 9. SetUp方法在从teamcity运行测试时失败
- 10. 只有当异步方法完成
- 11. 等待异步方法完成
- 12. 等待异步方法来完成
- 13. 等待两种异步方法完成
- 14. C#5异步方法完成事件。
- 15. 异步方法讷韦尔完成
- 16. 通用异步完成方法
- 17. 等待异步方法完成
- 18. 等待异步方法完成
- 19. 等待完成异步方法
- 20. TeamCity测试可以异步运行
- 21. GenServer异步集成测试
- 22. 仅在异步函数完成后才运行代码
- 23. 异步操作完成后运行一个函数
- 24. Gulp:异步任务完成后运行代码
- 25. 如何在两个异步函数完成后运行函数
- 26. 如何在maven完成集成测试后运行包目标?
- 27. Tomcat的继续运行后集成测试完成
- 28. 单元测试在peek完成时使用的异步回调方法
- 29. 测试一个异步方法调用
- 30. 测试requireJS方法与Jasmine异步