2015-03-27 2 views
3

Я хочу построить, установить и запустить тесты проекта UiAutomator через командную строку.Build UiAutomator 2.0 из командной строки

В предыдущей версии я делал:

android create uitest-project -n <project_name> -p <project_path> -t <target_id> 
ant build 

построить , а затем

adb push <jar_path> /data/local/tmp 

для установки и, наконец,

adb shell uiautomator runtest <jar_name> -c <main_class> 

Однако, сейчас я застрял в часть здания.

В результате

-check-env: 
    [checkenv] Android SDK Tools Revision 24.1.2          
    [checkenv] Installed at C:\Android                                
-build-setup:                 
[getbuildtools] Using latest Build Tools: 22.0.0          
    [echo] Resolving Build Target for AndroidExplorerTester...     
[getuitarget] Project Target: Android 5.0.1         
[getuitarget] API level:  21             
    [echo] ----------                
    [echo] Creating output directories if needed...                            
-pre-compile:                                     
compile:                                       
-post-compile:                                     
-dex:                     
    [dex] input: <test_path>\bin\classes                   
    [dex] Converting compiled files and external libraries into <test_path>\bin\classes.dex... 
    [dx] no classfiles specified                                
BUILD FAILED                  
C:\Android\tools\ant\uibuild.xml:198: null returned: 1                           
Total time: 1 second    

Я не знаю, есть ли лучший способ сделать это сейчас с новой версией UiAutomator.

Примечание: Я не знаю, если это имеет значение, но я использую Eclipse, прежде и теперь я использую IntelliJ (Android Studio, если вы предпочитаете лол)

ответ

2

Ну, я, наконец, понял это.

из командной строки, в основной папке проекта (где вы можете найти gradlew.bat файл) выполните следующие команды

сборки:

.\gradlew.bat assembleDebug 

установить на устройстве :

.\gradlew.bat installDebug 

(если вы хотите, чтобы версия Release просто заменила Debug для выпуска, я не пробовал, но существуют варианты, и поэтому я полагаю, что они работают)

пробег:

.\gradlew.bat connectedCheck 

Если вы хотите знать другие варианты, вы можете запустить

.\gradlew.bat tasks 

Дополнительная информация

Чтобы сделать это программно (Java) использовать Runtime.getRunti me(). exec (команда String, String [] envp, File dir). Например,

Runtime.getRuntime().exec(shell_command + " <path_to_test_folder>\gradlew.bat assembleDebug", null, new File(<path_to_test_project>)); 

Где shell_command зависит от операционной системы (команда для командной строки):

- Windows: cmd /C 
- Unix-based: /bin/sh -c 
+0

Обратите внимание, что 'connectedCheck' будет строить и устанавливать в любом случае, так запустив команды для этого вручную теряют время. –

+0

ах спасибо спасибо :) –

3

Вот еще один способ для тех, кто не хочет, чтобы перейти к Gradle и желаю остаться с муравейником. Кстати, главная причина, почему старый путь не работает, - это перемещение uiautomator, начиная с версии 2.0 от автономного тестового бегуна для банок до стандартного тестового бегущего андроида «am instrument» для приложений. Этот ход имеет только один «contra».Теперь тестовые проекты должны быть привязаны к определенному целевому приложению (см. Обходной путь на первом этапе). Итак, вот план.

Прежде всего, у вас должен быть целевой проект, для которого разработан ваш тест. На самом деле это может быть пустое приложение, которое вообще не будет отображаться ни в приложении, ни во время тестирования. Мне удалось создать его в Eclipse, не создавая никаких действий в мастере. Для того, чтобы запустить build.xml муравья:

android update project --target 0 --path %path_to_empty_app% 

Для получения дополнительной информации о андроиде инструмента см Http: // разработчик. андроид. com/tools/projects/projects-cmdline .html

Примечание: вы можете предоставить необходимые разрешения для целевого приложения, которое будет распространено на тестовое приложение. Теперь проверка не выполняется с разрешениями пользователя оболочки.

Второй этап - создание тестового проекта. Как я уже упоминал, uiautomator теперь интегрирован в стандартную схему тестирования Android. Таким образом, он использует стандартную команду для создания тестовых приложений:

android create test-project -m %path_to_target_app% -n %test_app_name% -p %path_to_test_app% 

Обычная структура приложения будет создана в% path_to_test_app%, в том числе build.xml муравья Для получения дополнительной информации см http://developer.android.com/tools/testing/testing_otheride.html

Третье: копия uiautomator классы jar для тестирования приложений libs. Банку можно извлечь из архива * .aar, расположенного в SDK, в \ extras \ android \ m2repository \ com \ android \ support \ test \ uiautomator \ uiautomator-v18 \ 2.1.0 или аналогичном.

В-четвертых: положите свой тестовый класс * .java, чтобы проверить папку приложения src. Обратите внимание на следующие изменения в uiautomator здесь:

  1. пакет переименовывается из com.android.uiautomator в android.support.test.uiautomator
  2. класс UiAutomatorTestCase является оставлены для совместимости, но считается устаревшим; продлить тестовый класс от InstrumentationTestCase, чтобы получить экземпляр UIDevice, используйте UiDevice.getInstance (getInstrumentation())

Пятое: установить и запустить тест. Простой способ заключается в следующем:

cd %path_to_test_app% 
:: Here 'ant instrument install' builds and installs both target and test apps. 
ant instrument install 
ant test 

или последняя строка может быть модифицирована для

adb shell am instrument -w %target_app_full_name%.tests/android.test.InstrumentationTestRunner 

Для получения дополнительной информации см http://developer.android.com/reference/android/test/InstrumentationTestRunner.html

Смежные вопросы