2015-02-25 4 views
0

У меня три асинхронных теста. Все выполняется нормально при тестировании в Xcode, но тестовый пример не может быть построен с помощью xcodebuild. Я получаю 11 ошибок сборки, связанных с XCTest Expectation.xcodebuild не может запускать асинхронные тесты с использованием 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]; 
    } 

} 
+0

Привет, PLS здесь выставляем тестовый метод, будет легче визуализировать происходящее ... tkx – Wils

+0

Добавлено. Благодаря :) – user3534641

ответ

0

Оказывается, этот вопрос был на самом деле, что в то время как у меня было 6.1 инструментов в XCode. У меня были старые инструменты на моем компьютере, и по какой-то причине, хотя мой xcode-select указывал на правильные, он пытался использовать старые инструменты. Удалены старые инструменты, и все работает сейчас :)

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"); 
    }]; 
} 
Смежные вопросы