Можно ли использовать Espresso для тестирования приложения с рабочим профилем AndroidForWork? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу проверить MyApp от Espresso.MyApp может сделать регистрацию в AndroidForWork.После регистрации на устройстве будет 2 MyApps: один с личным профилем, а другой с рабочим профилем, как показано ниже: (Я просто использую приложение для загрузки в качестве примера.) приложение с личным профилем и рабочим профилем

enter image description here

Мой вопрос: можно ли использовать эспрессо для тестирования приложений как личного, так и рабочего профиля?Если да, как это сделать?

Что я хочу проверить:

  1. Запустите MyApp (с личным профилем, пока нет рабочего профиля для MyApp).- Espresso работает нормально.
  2. Делайте регистрацию на AndroidForWork - Espresso работает нормально, затем генерируется MyApp с рабочим профилем.
  3. Запустите MyApp с рабочим профилем и протестируйте его.- Я не знаю, как это сделать.My Espresso только запустил MyApp с личным профилем. Оба MyApps (с личным или рабочим профилем) имеют одно и то же имя пакета.

Кстати, я пробовал UIAutomator для тестирования MyApp с рабочим профилем, но MyApp имееткакая-то веб-страница и UIAutomator не могут распознать веб-элементы внутри нее.Вот почему я все еще хочу использовать Espresso для тестирования MyApp с рабочим профилем.

1 Ответ

0 голосов
/ 09 июня 2018

Возможны следующие варианты ( блокировка запуска активности ):

Используйте InstrumentationRegistry для запуска намерения, нацеленного на профиль :

InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("am start --user <USER_ID> -n <appId>/<activity>")

(например, выборка пользовательской информации с pm list users)

Использование UIAutomator для запуска целевого приложения:

String appDrawer = "Apps";
String appTitle = "<App title>";

UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
device.pressHome();

if (device.hasObject(By.descStartsWith(appDrawer))) {
    device.findObject(By.descStartsWith(appDrawer)).click();
}

UiScrollable apps = new UiScrollable(new UiSelector().scrollable(true));
apps.scrollForward();
apps.scrollTextIntoView(appTitle);
List<UiObject2> items = device.findObjects(By.text(appTitle));

//TODO validate items content and identify the correct index
items.get(index).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...