xcodebuild无法使用XCTestExpectation运行异步测试?

时间:2015-02-25 15:27:39

标签: ios objective-c xcode xctestexpectation

我有三个异步测试。在Xcode中测试时,一切运行正常,但无法使用xcodebuild构建测试用例。我得到11个与XCTestExpectation有关的构建错误。

示例:

error: unknown type name 'XCTestExpectation' @property XCTestExpectation *expectationNoImage;

我使用的是最新的命令行工具(Xcode 6.1.1)。 xcodebuild -version正确地说明了这一点。

我使用以下命令运行构建

xcodebuild -project myprojasync.xcodeproj -scheme testScheme -configuration Debug -sdk iphonesimulator7.1 clean test | ocunit2junit

如果我注释掉异步测试及其同行,那么所有内容都可以使用相同的命令完美运行。

编辑:这是测试方法之一。

@property XCTestExpectation *expectationPass;

-(void)testTaskPass{

//Expectation
self.expectationPass = [self expectationWithDescription:@"Testing Async Works"];

[self.asyncTask getInfo]; //asynchronous call

[self waitForExpectationsWithTimeout:5.0 handler:nil];
}  

-(void)returnedFrom:(NSURL *)url with:(UIImage *)image{
    if([[url absoluteString] isEqualToString: @"http://correcturl.com"]){
    [self.expectationPass fulfill];
    }

}

2 个答案:

答案 0 :(得分:1)

当你满足期望时,目前尚不清楚。我知道你有:

-(void)returnedFrom:(NSURL *)url with:(UIImage *)image;

那里有实现,但是当你打电话时我不清楚。

我就是这样做的:

@property XCTestExpectation *expectationPass;

-(void)testTaskPass{

   //Expectation
   self.expectationPass = [self expectationWithDescription:@"Testing Async Works"];

   //asynchronous call
   [self.asyncTask getInfo:^(){
       // some Assertions here...
       [self.expectationPass fulfill];
   }];

   [self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error){
       XCTAssertNil(error, "Error");
   }];
}

答案 1 :(得分:0)

事实证明,问题实际上是我在XCode中拥有6.1工具。我的计算机上还有较旧的工具,无论出于何种原因,即使我的xcode-select指向了正确的工具,它也试图使用较旧的工具。卸载旧工具,现在一切正常:)