Я пытаюсь выполнить некоторое тестирование пользовательского интерфейса с помощью эспрессо, но когда он входит в действие, которое создается через библиотеку, эспрессо ничего не делает. Похоже, эспрессо делает паузу и ждет, пока действие библиотеки не завершится, и возобновит остальные команды.
Класс испытаний:
Вот что у меня есть для тестового класса.
@RunWith(AndroidJUnit4.class)
public class MainActivityTest{
@Rule
public ActivityTestRule<MainActivity> activityTestRule =
new ActivityTestRule<>(MainActivity.class);
@Test
public void startTest) throws Exception {
// starts KEYBOARD_ACTIVITY
onView(withId(R.id.button_start)).perform(click());
// test pauses here!!
// pressBack supposed to go back to MainActivity,
// but this doesnt do anything either
// pressBack();
// click random coordinates several times
onView(withId(R.id.KEYBOARDAREA)).perform(clickXY(randomCoordinates));
// This supposed to finish the KEYBOARD_ACTIVITY and go back to MainActivity
onView(withId(R.id.button_done)).perform(click());
}
Проблема в том, что тест приостанавливается сразу после нажатия button_start , и если я ничего не делаю, тест завершается неудачей в течение минуты или около того по таймауту (?), Или если я выйду из KEYBOARD_ACTIVITY, тест возобновляется и выдает ошибку исключения nullpointer, поскольку R.id.KEYBORDAREA больше нет.
О библиотеке:
У меня есть MainActivity с кнопкой, которая запускает новое действие, используя следующий код в MainActivity:
Intent intent = KEYBOARD_ACTIVITY.makeIntent(MainActivity.this, params);
startActivityForResult(intent, REQUEST);
Поскольку библиотека .aar, которая уже добавлена как зависимость модуля, сама создает действие с параметрами, у меня нет файла класса активности внутри проекта; вместо этого я добавляю активность в AndroidManifest.xml так же, как добавляю другие действия. Во время действия с клавиатурой пользователь должен дотронуться до клавиатуры и, наконец, нажать «Готово», затем результат возвращается к MainActivity и показывает результат.
Библиотека состоит из некоторых файлов C, использующих jni, который шифрует вводимые пользователем данные, и коды Java, которые обрабатывают появления, параметры, действия и т. Д.
Что я сделал до сих пор:
Я попытался начать тестирование с KEYBOARD_ACTIVITY, имея правило:
@ Правило
public ActivityTestRule activityTestRule =
новый ActivityTestRule <> (KEYBOARDACTIVITY.class)
Но это выдает ошибку nullPointerException, сообщающую попытку вызова виртуального метода .
- Я тоже попробовал UiAutomator, но он сделал паузу и возобновил, как и эспрессо.
Кто-нибудь испытывал что-нибудь подобное? Например, эспрессо ничего не делает для активности, вызываемой из внешней библиотеки?
Или кто-нибудь знает что-либо об уровнях доступа эспрессо к другим действиям, если такая вещь существует? Или, может быть, есть такая вещь, как "фокус" эспрессо в тестировании.