我有一系列使用XCTest框架编写的单元测试。它们最初是在iOS7上创建的,然后在xCode6中在iOS8设备上执行。测试是按顺序执行的,但是我得到了下面的代码块的EXC_BAD_ACCESS (code= 1,address 0xc)。当使用xcode中的"Test“命令执行测试时,就会发生这种情况。
如果我从测试左侧面板单独执行此测试,则将正常通过或失败。
我认为我在做的事情是:
如何确保我能够毫无例外地执行所有的单元测试?
//单元测试
-(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];
}发布于 2015-10-19 09:24:13
我也遇到了同样的问题,导致每一个街区的呼叫都会发生故障。
该错误是由后台运行的主应用程序造成的。您可以防止这种情况--我为您的测试目标添加了您自己的AppDelegate,它不会启动通常的应用程序流。因此,从测试目标中删除旧的AppDelegate,创建一个新的,并将其添加到您的测试目标。
然后,您必须更改main.m文件,以便在应用程序启动时设置正确的app委托:
int main(int argc, char *argv[]) {
@autoreleasepool {
int returnValue;
BOOL inTests = NSClassFromString(@"XCTest") != nil;
if (inTests) {
//use a special empty delegate when we are inside the tests
returnValue = UIApplicationMain(argc, argv, nil, @"AppDelegateTest");
} else {
//use the normal delegate
returnValue = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
return returnValue;
} }https://stackoverflow.com/questions/26344226
复制相似问题