从命令行构建 UiAutomator 2.0
Build UiAutomator 2.0 from command line
我想通过命令行构建、安装和运行 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)
好吧,我终于明白了。
从命令行,在项目的主文件夹中(您可以在其中找到 gradlew.bat 文件)运行 以下命令
构建:
.\gradlew.bat assembleDebug
在设备上安装:
.\gradlew.bat installDebug
(如果你想要 Release 版本,只需将 Debug 替换为 Release,我没有尝试过,但选项存在,所以我想它们可以工作)
运行:
.\gradlew.bat connectedCheck
如果您想了解其他选项,您可能有 运行
.\gradlew.bat tasks
额外信息
以编程方式 (Java) 使用 Runtime.getRuntime().exec(String command, 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
对于那些不想搬到 gradle 并希望留在 ant 的人来说,这是另一种方法。顺便说一句,旧方法不起作用的主要原因是将 uiautomator 从其 2.0 版本开始从独立测试 运行ner for jars 转移到标准 android 'am instrument' 测试 运行 应用程序。这一招只有一个'contra'。现在测试项目应该绑定到一个明确的目标应用程序(参见第一步中的解决方法)。所以这是一个计划。
首先,您应该有一个目标项目,您的测试就是为此而设计的。事实上,它可以是一个空的应用程序,它根本不会显示,既不会出现在应用程序菜单中,也不会出现在测试期间。我设法在 Eclipse 中创建了一个,而没有在向导中创建任何 activity。使蚂蚁的 build.xml 运行:
android update project --target 0 --path %path_to_empty_app%
有关 android 工具的更多信息,请参阅 http://developer。 android。 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 classes jar 来测试应用程序库。可以从位于 \extras\android\m2repository\com\android\support\test\uiautomator\uiautomator-v18.1.0 或类似文件中的 SDK 中的 *.aar 存档中提取 jar。
第四步:把你的测试class*.java放到test app src文件夹。请注意此处 uiautomator 中的以下更改:
- 包从 com.android.uiautomator 重命名为
android.support.test.uiautomator
- UiAutomatorTestCase class 是
保留兼容性,但已弃用;扩展你的测试 class
从 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
我想通过命令行构建、安装和运行 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)
好吧,我终于明白了。
从命令行,在项目的主文件夹中(您可以在其中找到 gradlew.bat 文件)运行 以下命令
构建:
.\gradlew.bat assembleDebug
在设备上安装:
.\gradlew.bat installDebug
(如果你想要 Release 版本,只需将 Debug 替换为 Release,我没有尝试过,但选项存在,所以我想它们可以工作)
运行:
.\gradlew.bat connectedCheck
如果您想了解其他选项,您可能有 运行
.\gradlew.bat tasks
额外信息
以编程方式 (Java) 使用 Runtime.getRuntime().exec(String command, 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
对于那些不想搬到 gradle 并希望留在 ant 的人来说,这是另一种方法。顺便说一句,旧方法不起作用的主要原因是将 uiautomator 从其 2.0 版本开始从独立测试 运行ner for jars 转移到标准 android 'am instrument' 测试 运行 应用程序。这一招只有一个'contra'。现在测试项目应该绑定到一个明确的目标应用程序(参见第一步中的解决方法)。所以这是一个计划。
首先,您应该有一个目标项目,您的测试就是为此而设计的。事实上,它可以是一个空的应用程序,它根本不会显示,既不会出现在应用程序菜单中,也不会出现在测试期间。我设法在 Eclipse 中创建了一个,而没有在向导中创建任何 activity。使蚂蚁的 build.xml 运行:
android update project --target 0 --path %path_to_empty_app%
有关 android 工具的更多信息,请参阅 http://developer。 android。 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 classes jar 来测试应用程序库。可以从位于 \extras\android\m2repository\com\android\support\test\uiautomator\uiautomator-v18.1.0 或类似文件中的 SDK 中的 *.aar 存档中提取 jar。
第四步:把你的测试class*.java放到test app src文件夹。请注意此处 uiautomator 中的以下更改:
- 包从 com.android.uiautomator 重命名为 android.support.test.uiautomator
- UiAutomatorTestCase class 是 保留兼容性,但已弃用;扩展你的测试 class 从 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