Тест Android Espresso на неправильную активность

У меня есть два действия в моем приложении: действие входа (loginActivity) и второе действие (mainActivity). Я хочу использовать 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

Примечание. Если я запущу приложение и выйду из системы до запуска теста, ошибка исчезнет.

Заранее спасибо!


person Filipe Ramos    schedule 11.02.2015    source источник


Ответы (1)


Используйте if для выполнения теста только в том случае, если пользователь ранее не входил в систему. Затем вы можете добавить else, чтобы также проверить состояние входа в систему.

В противном случае вам нужно попытаться поймать исключение NoMatchingViewException, чтобы указать вашему приложению не выполнять тест входа в систему в случае зарегистрированного пользователя. Что-то вроде:

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

Дайте мне знать, если это чем-то помогло :)

person Clover    schedule 11.02.2015
comment
Это просто означает, что вы пропускаете текст! - person android enthusiast; 19.09.2017