0

我有三个异步测试。在 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];
    }

}
4

2 回答 2

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");
   }];
}
于 2015-03-10T13:31:42.830 回答
0

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

于 2015-03-20T17:00:21.547 回答