Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

UiAutomator передача параметров в тест


(Andrey Kharkov) #1

Здравствуйте подскажите пожалуйста:

1. Как передать параметры в UiAutomator тест из коммандной строки и как потом их в тесте взять?

2. Как запустить UiAutomator тест на эмуляторе с API <16?

3. Как запустить UiAutomator тест сразу на нескольких устройствах?

Заранее большое спасибо.

 


UIAutomator: performance testing, API<16, скриншоты
(Andrey Kharkov) #2

С задачей номер 1 уже разобрался.

Все оказалось очень просто.
Запускаем тест с коммандой строки: adb shell uiautomator runtest Demo.jar -e x test -c q.w.TestSecond
А в тесте добавляем две строчки
Bundle bun=this.getParams();
String w=bun.getString("x");
И теперь w=test. Передача параметров в тест это круто!
 


(Natalja Librante Lace) #3

AndreyKharkov, Спасибо за пример решения


(Dmitry Cheremushkin) #4

Для всех подключенных устройств так:

NUM=`expr $(adb devices | wc -l) - 1`
DEVICES_LIST=`adb devices | tail -$NUM | awk -F " " '{print $1}'`

for DEVICE in $DEVICES_LIST; do \
  adb -s $DEVICE shell uiautomator runtest Demo.jar -c q.w.TestSecond
done

Если в цикле выполняется только 1 тест / команда, то целесообразно поставить амперсанд на конце — так тест будет запущен в фоне, т.е. практически одновременно на всех устройствах (без ожидания выполнения на предыдущем).

for DEVICE in $DEVICES_LIST; do \
  adb -s $DEVICE shell uiautomator runtest Demo.jar -c q.w.TestSecond &
done

(Dmitry Cheremushkin) #5

К сожалению, никак. uiautomator появился в API 16. Раньше его просто не было – соответственно и тесты работать не будут.


В качестве альтернативы можете посмотреть в сторону monkeyrunner или Selendroid.


(Andrey Kharkov) #6

Спасибо!