4

次のアプリ構造があるとします。

[View Controller 1] -> tap on next button
                       [View Controller 2] -> Check for Title

EarlGrey では、次のようにしてこのテストを定義しました。

[[EarlGrey selectElementWithMatcher:grey_text(@"Next Button")]
    performAction:grey_tap()]
[[EarlGrey selectElementWithMatcher:grey_text(@"Screen Title")]
    assertWithMatcher:grey_sufficientlyVisible()];

しかし今、 をテストしたいとき[View Controller 3]、アプリがまだ に固執していることに気付きました[View Controller 2]。最初の画面に戻ったり、次のテストのためにアプリケーションをリセットしたりできる呼び出しがありませんか?

4

1 に答える 1

4

他の xctest と同様に、アプリは再起動され、前のテストが終了したときと同じ状態のままです。テスト ケースの tearDown または setUp のいずれかで、アプリの状態を明示的にリセットする必要があります。あなたはできる:

  1. 各テスト ケースの完了後にアプリをメイン画面に戻す UI インタラクションを記述します。

  2. App デリゲートにメソッドを導入し、resetApplicationForTesting各テスト ケースの setUp メソッドから呼び出します。このロジックを複数のテスト ケースで共有する必要がある場合は、これらのテスト ケースが継承する BaseTestClass を作成することを検討してください。

テストの setUp メソッドで:

    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [delegate resetApplicationForTesting];
于 2016-08-01T22:18:56.043 に答える