2016-05-23 1 views
0

Я создаю тест в эспрессо, который вызывает swipeRight(), чтобы перейти к MainActivity, где поведение задано перед возвратом в ConsumerSettingsActivity для тестирования Views. Однако проблема заключается в том, что после вызова салфетки я получаю NoActivityResumedException, который указывает на вторую тестируемую линию с R.id.mode_text.Как проверить прохождение между мероприятиями в эспрессо?

@RunWith(AndroidJUnit4.class) 
public class ConsumerSettingsActivityTest { 

private ConsumerSettingsActivity mConsumerSettingsActivity; 

@Rule 
public ActivityTestRule<ConsumerSettingsActivity> mActivityTestRule = 
     new ActivityTestRule<>(ConsumerSettingsActivity.class); 

@Before 
public void initialize() { 
    mConsumerSettingsActivity = mActivityTestRule.getActivity(); 
} 

@Test 
public void checkCorrectButtonsAreClickableInPhotoModeThenReturnToMainActivity() { 

    // swipe to MainActivity and set behavior 
    onView(allOf(withId(R.id.settings_top_bar), isDisplayed())).perform(swipeRight()); 
    onView(withId(R.id.mode_text)).perform(click()); 
    onView(withId(R.id.photo_mode)).perform(click()); 


    // test ratio Views 
    onView(withId(R.id.ratio_full)).check(matches(isClickable())); 
    onView(withId(R.id.ratio_full)).perform(click()); 
    onView(withId(R.id.ratio_square)).check(matches(isClickable())); 
    onView(withId(R.id.ratio_square)).perform(click()); 
... 
} 
} 
+0

У меня была та же проблема. Это случается со мной, когда экран моего устройства отключен. Включен ли экран вашего устройства? И я также должен ждать 500 мс после каждого салфетки, чтобы подождать, пока салфетка не будет выполнена. Надеюсь, поможет. – jeprubio

+0

Экран устройства всегда включен и разблокирован. Как только я вызываю салфетки, нажата кнопка, которая делает то же самое, и возникает ошибка. Я попытался добавить 'Thread.sleep (1500)' после первого прокрутки, но получить 'RuntimeException:: никаких действий не найдено. Вы забыли запустить эту деятельность, вызвав getActivity() или startActivitySync или аналогичный? ' –

ответ

0

Короткий ответ: MainActivity был вызван без создания.

Длинный ответ: когда ConsumerSettingsActivity называется салфеткой, чтобы перейти на MainActivity, фактическое прокручивание называется finish(). С MainActivity не был создан, был выброшен NoActivityResumedException. Чтобы решить эту проблему, тест был изменен для начала с MainActivity, где он затем прокручивается до ConsumerSettingsActivity. Кроме того, мне не нужно было, чтобы поток спящего режима мог прокручиваться между действиями.