Эспрессо-паузы на активности, начатой ​​из сторонней библиотеки - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь выполнить некоторое тестирование пользовательского интерфейса с помощью эспрессо, но когда он входит в действие, которое создается через библиотеку, эспрессо ничего не делает. Похоже, эспрессо делает паузу и ждет, пока действие библиотеки не завершится, и возобновит остальные команды.

Класс испытаний:

Вот что у меня есть для тестового класса.

@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, которые обрабатывают появления, параметры, действия и т. Д.

Что я сделал до сих пор:

  1. Я попытался начать тестирование с KEYBOARD_ACTIVITY, имея правило:

    @ Правило public ActivityTestRule activityTestRule = новый ActivityTestRule <> (KEYBOARDACTIVITY.class)

Но это выдает ошибку nullPointerException, сообщающую попытку вызова виртуального метода .

  1. Я тоже попробовал UiAutomator, но он сделал паузу и возобновил, как и эспрессо.

Кто-нибудь испытывал что-нибудь подобное? Например, эспрессо ничего не делает для активности, вызываемой из внешней библиотеки? Или кто-нибудь знает что-либо об уровнях доступа эспрессо к другим действиям, если такая вещь существует? Или, может быть, есть такая вещь, как "фокус" эспрессо в тестировании.

...