UIテストの使い方をまだ習っています。iOS UIテスト:アクティブアプリケーションのリストを取得できませんでした:AXエラー-25205
私はバックグラウンドでログインし、後で自分のニュースフィードに結果を表示します。次に、私はもっとボタンをタップします。 Webサービスがあると、私のAPIから結果が得られないように見えます。これは常にこのように失敗し、私のAPIからのデータも表示されません。どうすればいいですか?
UIテストの使い方をまだ習っています。iOS UIテスト:アクティブアプリケーションのリストを取得できませんでした:AXエラー-25205
私はバックグラウンドでログインし、後で自分のニュースフィードに結果を表示します。次に、私はもっとボタンをタップします。 Webサービスがあると、私のAPIから結果が得られないように見えます。これは常にこのように失敗し、私のAPIからのデータも表示されません。どうすればいいですか?
あなたのテストでsleep()
を使用すべきではありません。代わりに、ネイティブAPIを使用して要素が存在するのを待ちます。 「コンテスト」のテキストは、次のように表示されるまで、たとえば、あなたは待つことができます:
XCUIApplication *app = [[XCUIApplication alloc] init];
XCUIElement *moreButton = app.tabBars.buttons[@"More"];
XCUIElement *contestsText = app.staticTexts[@"Contests"];
NSPredicate *exists = [NSPredicate predicateWithFormat:@"exists == YES"];
[self expectationForPredicate:exists evaluatedWithObject:contestsText handler:nil];
[moreButton tap];
[self waitForExpectationsWithTimeout:5.0f handler:nil];
XCTAssert(contestsText.exists);
この例は、私のUI Testing Cheat Sheetから来ています。 UIテストを始めたばかりの方は、チェックアウトすることをお勧めします。
シミュレータ使用中に同じ問題が発生しました。デバイス上でテストケースを実行しようとしましたが、正常に動作しています。実際のデバイスで実行し、エラーが表示されるかどうかを確認します。
シミュレータをリセットすると、私の問題が解決しました。シミュレータのメインメニューからSimulator
- Reset Content and Settings...
で実行できます。 CIシステムで使用する
、これらのコマンドは役立つかもしれない:
osascript -e 'tell application "iOS Simulator" to quit'
osascript -e 'tell application "Simulator" to quit'
xcrun simctl erase all