我有許多異步單元測試可以根據自己的期望正確工作。但是,當我在訴訟中運行所有測試時,他們不會等待其他人完成 - 異步回調在下次測試開始運行時仍處於等待狀態。我想要的是每次測試都要在運行前等待前一次測試中的預期。這些測試使用共享數據庫,因此讓它們重疊會導致煩人的額外複雜性,並在作爲套件運行時出現測試失敗。在XCode開始下一個單元測試之前等待XCTestExpectation
- (void)testSignIn {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
XCTestExpectation *expectation =
[self expectationWithDescription:@"Expectations"];
[_userManager signInWithUsername:kUserEmail andPassword:kUserPassword
success:^{
XCTAssertNotNil([_userManager getCurrentUser]);
XCTAssertNotNil([_userManager getCurrentUser].plan);
XCTAssertTrue([_userManager getCurrentUser].plan.liveStream == TRUE);
[expectation fulfill];
} failure:^(EDApiError *apiError) {
XCTAssertTrue(FALSE); // Should not fail
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error) {
if (error) {
NSLog(@"Timeout Error: %@", error);
}
}];
}
這沒有任何意義,一次測試在開始下一次測試之前應該失敗/成功,這兩種方法都必須滿足期望。我能想到的唯一的事情就是從單個測試的2個地方調用'testSignIn'。所以請確保你沒有從一次測試中運行兩次。 2.另外5秒超時有點太少。我會建議至少30秒。 – Honey
看起來像期望需要有不同的描述字符串。我把所有的我都設置爲相同的字符串,這似乎導致了我所看到的行爲。 – deepwinter
(刪除了我以前的評論)我試圖理解這一點。我的意思是仍然沒有2個測試同時運行。所以,儘管這有效,但我猜這不是根本原因... – Honey