我有一系列使用 XCTest 框架编写的单元测试。这些最初是在 iOS7 上创建的,然后在 iOS8 设备上的 xCode6 中执行。测试按顺序执行,但随后我得到以下代码块的 EXC_BAD_ACCESS (code= 1, address 0xc)。当使用 xcode 中的“测试”命令执行测试时会发生这种情况。
如果我从测试左侧面板单独执行此测试,它会正常通过或失败。
这就是我认为我正在做的事情:
- 设置期望
- 获取数据源(旧的立即返回)
- 从网络资源异步更新数据源。
- 测试用例收到委托回调通知并满足预期
如何确保我可以毫无例外地执行所有单元测试?
//单元测试
-(void)testNetworkDataSourceUpdate
{
self.expectation = [self expectationWithDescription:@"Getting network datasource"];
DataSource* dataSource = [DataSourceProvider datasourceWithRefreshDelegate:self];
XCTAssertNotNil(dataSource, @"Should have datasource immediately available");
//Bad access here
[self waitForExpectationsWithTimeout:10.0 handler:^(NSError *error) {
}];
}
//打回来
-(void)refreshDatasource:(NSMutableArray*)datasource
{
[self.expectation fulfill];
}