Тестирование пользовательского интерфейса Android в Expresso: никаких действий на этапе RESUMED
В настоящее время я борюсь за реализацию функционального теста на Android ListActivity, который реализует LoaderManager.LoaderCallbacks. Это действие имеет простой макет, в котором есть EditText для пользователя, чтобы ввести некоторую строку, и ListView, который заполняется через пользовательский CursorAdapter, который извлекает данные из провайдера пользовательского содержимого, и использует LoadManager для автоматического обновления содержимого представления списка, когда меняется.
Ожидаемая функциональность этого ListActivity заключается только в том, чтобы пользователь мог ввести некоторую строку в EditText и выбрать один или несколько элементов из ListView.
Чтобы выполнить этот функциональный тест, я использую Expresso, и вот моя реализация:
public class NewWordActivityFunctionalTest extends ActivityInstrumentationTestCase2<NewWordActivity>{
public NewWordActivityFunctionalTest() {
super(NewWordActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testFillNewThemeFormAndSubmit() throws InterruptedException {
onView(withId(R.id.submit_new_word_button))
.perform(click());
}
}
Если я запускаю его, трассировка стека ошибок, которую я получаю, выглядит следующим образом:
com.google.android.apps.common.testing.ui.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)?
at dalvik.system.VMStack.getThreadStackTrace(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:579)
at com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:69)
at com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:40)
at com.google.android.apps.common.testing.ui.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:159)
at com.google.android.apps.common.testing.ui.espresso.ViewInteraction.doPerform(ViewInteraction.java:90)
at com.google.android.apps.common.testing.ui.espresso.ViewInteraction.perform(ViewInteraction.java:73)
at pt.consipere.hangman.ui.test.NewWordActivityFunctionalTest.testFillNewThemeFormAndSubmit(NewWordActivityFunctionalTest.java:36)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onStart(GoogleInstrumentationTestRunner.java:167)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
Эта тестовая установка - та же самая, что я использовал в других функциональных тестах моего приложения, которые прекрасно работали, что заставило меня подумать, что проблема может быть в инициализации теста, поскольку единственное отличие для других тестов заключается в том, что это действие использует CursorAdapter и LoadManager.
Если кому-то нужно больше контекстуализации, пожалуйста, спросите. Спасибо:)