从命令行构建UiAutomator 2.0

时间:2015-03-27 13:21:01

标签: android shell testing android-uiautomator

我想通过命令行构建,安装和运行UiAutomator项目的测试。

在我之前的版本中:

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,如果您更喜欢lol)

2 个答案:

答案 0 :(得分:4)

对于那些不愿意参与并希望留在蚂蚁中的人来说,这是另一种方式。顺便说一句,主要的原因,为什么旧​​的方式不起作用,是uiautomator从2.0版本开始从独立测试运行器到罐子,再到标准的android&#39; am仪器&#39;应用程序测试运行器。这一举动只有一个“反对”。现在,测试项目应该绑定到一个明确的目标应用程序(请参阅第一步中的解决方法)。所以这是一个计划。

首先,您应该有一个目标项目,为您的测试设计。实际上它可以是一个空的应用程序,在应用程序菜单中或测试期间都不会显示。我设法在Eclipse中创建一个,而不在向导中创建任何活动。要使ant的build.xml运行:

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

有关android工具的更多信息,请参阅http:// developer。机器人。 com / tools / projects / projects-cmdline .html

注意:您可能希望为目标应用提供必要的权限,这些权限将传播到测试应用。现在测试不使用shell用户权限运行。

第二步是创建一个测试项目。正如我所提到的,uiautomator现已集成在标准的android测试方案中。因此,它使用标准命令来创建测试应用程序:

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

将在%path_to_test_app%中创建常用的应用结构,包括ant的build.xml 有关详细信息,请参阅http://developer.android.com/tools/testing/testing_otheride.html

第三:复制uiautomator类jar来测试app libs。 jar可以从位于\ extras \ android \ m2repository \ com \ android \ support \ test \ uiautomator \ uiautomator-v18 \ 2.1.0或类似的SDK中的* .aar存档中提取。

第四:将测试类* .java放到测试app src文件夹中。请注意uiautomator中的以下更改:

  1. 包从com.android.uiautomator重命名为 android.support.test.uiautomator
  2. UiAutomatorTestCase类是 左侧是兼容性,但已被弃用;扩展您的测试类 从InstrumentationTestCase,获取UiDevice实例,使用 UiDevice.getInstance(getInstrumentation())
  3. 第五:安装并运行测试。简单的方法如下:

    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

答案 1 :(得分:2)

好吧,我终于明白了。

从命令行,在项目的主文件夹中(您可以在其中找到gradlew.bat文件)运行以下命令

<强>构建

.\gradlew.bat assembleDebug
在设备上

安装

.\gradlew.bat installDebug

(如果你想发布版本只是替换Debug for Release,我没有尝试但是选项存在,所以我认为它们有效)

生成

.\gradlew.bat connectedCheck

如果您想了解其他选项,可以运行

.\gradlew.bat tasks

额外信息

以编程方式(Java)使用Runtime.getRuntime()。exec(String命令,String [] envp,File目录)。例如,

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