2015-11-10 22 views
12

私のUIテストは、アプリケーションがアイドル状態になるまで無限に待機するため、失敗します。私は、ローディングスピナーのように、バックグラウンドで何かが起こっているのを見ることができません。XCTestCase:アプリケーションがアイドル状態になるのを待ちます。

ただ1つのタブで発生します。他のすべてのタブはテープ化可能ですが、テストはスクリーン3で失敗します。テストがスクリーン3でキャッチされた後、別のタブをクリックして、テストが再開して正常に終了します。

アイデア?

- (void)testExample 
{ 

    XCUIElementQuery* tabBarsQuery = self.app.tabBars; 

    [tabBarsQuery.buttons[@"Screen2"] tap]; 
    [tabBarsQuery.buttons[@"Screen3"] tap]; 
    [tabBarsQuery.buttons[@"Screen1"] tap]; 
    [tabBarsQuery.buttons[@"Screen4"] tap]; 

} 

答えて

7

おそらく、主スレッドのUIを頻繁に更新するアニメーションやその他の背景(または前景)アクティビティがあります。これにより、少なくともこのタブではアプリケーションが「静止」しないようになります。私たちのアプリケーションでは、オプションRepeatを持つUIViewアニメーションがありました。 CPUの使用状況は良好で、バッテリーの消耗ではありませんでしたが、毎回テストが失敗しました。アニメーションを無効にすると問題が解決しました。テストがアイドル状態になるのを待たせない方法を見つけられなかったので、 UIテストターゲット の#ifdefを使用して実行時引数を使用してアニメーションを無効にしました。https://stackoverflow.com/a/33466038/168996

+0

テストプロセスがアニメーションを無視するようにする方法が必要です...アニメーションはアプリでは普通のものですか?アニメーションは、テストフローにとって意味を持ちません。何かが動いているからといって、UI内で別のボタンをタップできないというわけではありません。 – Jonny

+0

これは以前のバージョンでは単にXCTestのバグだったのでしょうか?私は100%確信していませんが、これはうまく動いていると思います。つまり、繰り返しアニメーションがありますが、テストに失敗しません。 –

関連する問題