1

アプリには、ログイン アクティビティ (loginActivity) と 2 つ目のアクティビティ (mainActivity) の 2 つのアクティビティがあります。Espresso を使用して loginActivity でのログインをテストしたいので、次のテストを作成しました。

public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity> {

    public LoginActivityTest() {
        super(LoginActivity.class);
    }

    @Override
    public void setUp() throws Exception {
        super.setUp();

        getActivity();
    }

    public void testLogin() throws Exception {
        onView(withId(R.id.button_log_in)).perform(click());

        onView(withId(R.id.container)).check(matches(isDisplayed()));
    }
}

問題は、アプリの起動時に、ユーザーが以前にログインしていた場合、loginActivity がすぐに mainActivity を起動し、テストが実行されると、次のエラーで失敗することです。

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.test.android.development:id/R.id.button_log_in

注: テストを実行する前にアプリを起動してログアウトすると、エラーは表示されなくなります。

前もって感謝します!

4

2 に答える 2

-1

を使用しifて、ユーザーが以前にログインしていない場合にのみテストを実行します。その後、 を追加しelseて、ログに記録されたステータスもテストできます。

それ以外の場合は、NoMatchingViewException をキャッチして、ログインしているユーザーの場合にログイン テストを実行しないようにアプリに指示する必要があります。何かのようなもの:

try {
     // your test code here
  } catch (NoMatchingViewException e){
    Log.d(TAG_LOG, "No login test performed!");
  }

これが役に立ったかどうか教えてください:)

于 2015-02-11T11:27:54.727 に答える