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

Android UiAutomator. Запуск тестов тест-сьютами


(Natalja Librante Lace) #1

Для тестирования мобильного приложения в UiAutomator я создала несколько автономных тестов. Каждый тест - это отдельный класс.
Автономны тесты тем, что каждый тест начинается с выхода в список всех приложений, поиска нужного приложения, логина и завершается логаутом.

Теперь есть желание запускать эти тесты не по отдельности, а единым ест-сьютом.
Приведенное здесь решение: http://stackoverflow.com/questions/16501909/how-to-run-set-of-test-cases-using-androids-ui-automator
мне не совсем подходит, так как тесты у меня - не методы в одном классе, а каждый тест - это отдельный класс.

попробовала сделать такой bat-файл:

cd "C:\Projects\Mobile\AndroidTestProject" 
ant build && cd "C:\Program Files\Android\android-sdk\platform-tools" && adb push C:\Projects\Mobile\AndroidTestProject\bin\AccountCheckTest.jar /data/local/tmp/ && adb shell uiautomator runtest AccountCheckTest.jar -c AccountCheckTest 
cd "C:\Projects\Mobile\AndroidTestProject" 
ant build && cd "C:\Program Files\Android\android-sdk\platform-tools" && adb push C:\Projects\Mobile\AndroidTestProject\bin\CardsCheckTest.jar /data/local/tmp/ && adb shell uiautomator runtest CardsCheckTest.jar -c CardsCheckTest
Pause

В данном случае запускается первый тест, но даже в случае успешного прохождения второй тест не запускается. Вообще реально ли в принципе при такой системе создавать тест-сьюты, или все же надо все тесты помещать в один класс (очень не хочется) и пробовать приведенный в stackoverflow вариант?


(Andrey Kharkov) #2

Для всех классов создается один жар файл, так что сделайте нормальный батник и все заработает


(Andrey Kharkov) #3

Второй вариант, сделайте класс который запускает все ваши классы по очереди
Process process = Runtime.getRuntime().exec(“adb shell uiautomator runtest AccountCheckTest.jar -c AccountCheckTest”);


(Natalja Librante Lace) #4

А можно пример, пожалуйста? Если у меня несколько классов, как их в один жар-файл сделать?
Я с антом начала работать только для мобильного тестирования и пока могу лишь точно следовать инструкциям, а по ним для каждого класса делается отдельный билд и потом созданный жар-файл пушится на эмулятор…


(Andrey Kharkov) #5

То что для каждого класса делается отдельный билд - это глупости. Когда вы запускаете ант билд - Вы создаете жар файл в котором находятся все классы проекта. После этого жар файл пушится на девайс и любой класс запускается из него коммандой
adb shell uiautomator runtest AccountCheckTest.jar -c Class1
adb shell uiautomator runtest AccountCheckTest.jar -c Class2
и так далее


(Dmitry Cheremushkin) #6

Вместо

пишете следующее:

cd "C:\Projects\Mobile\AndroidTestProject" 
ant build && cd "C:\Program Files\Android\android-sdk\platform-tools" && adb push C:\Projects\Mobile\AndroidTestProject\bin\AccountCheckTest.jar /data/local/tmp/

adb shell uiautomator runtest AccountCheckTest.jar -c AccountCheckTest 
adb shell uiautomator runtest CardsCheckTest.jar -c CardsCheckTest
...
pause

(Natalja Librante Lace) #7

Заработало, у меня правда надо все команды в батнике указывать через “&&” иначе тест останавливается.

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