android - 强制android测试从命令行批处理文件在不同的模拟器上运行

标签 android command-line batch-file robotium

如何在每个模拟器上从命令行运行我的 android junit/robotium 测试?我想确保我的测试在许多 Android 操作系统版本和许多屏幕分辨率上运行。

我想编写一个从 Windows 命令行运行的批处理文件,以便在我安装的每个模拟器上一遍又一遍地运行我的测试套件。

要从命令行运行,我可以这样做:

adb shell am instrument -w com.myapp.client.test/android.test.InstrumentationTestRunner

但这只是在默认模拟器上运行它。如何强制该命令在我设置的所有模拟器上运行?

理想情况下,批处理文件看起来像这样:

  1. 启动模拟器1
  2. 运行测试
  3. 关闭模拟器1
  4. 启动模拟器2
  5. 运行测试
  6. 关闭模拟器2
  7. ...

我不知道如何进行启动和关闭部分。

谢谢


编辑:找到解决方案。下面是我的批处理文件

set PORTRAIT=medium
set LANDSCAPE=large

:: launch emulator
emulator -avd android2.2

:: wait for emulator to load
adb wait-for-device

:: install apps?

:: run tests in portrait
adb shell am instrument -w -e size %PORTRAIT% com.myapp.client.test/android.test.InstrumentationTestRunner

:: run tests in landscape
adb shell am instrument -w -e size %LANDSCAPE% com.myapp.client.test/android.test.InstrumentationTestRunner

:: pull screenshots
adb pull /sdcard/ c:\

:: close/kill emulator (android bug here, so must use windows taskkill)
taskkill /IM emulator-arm.exe

最佳答案

我真的建议您使用 Jenkins 之类的工具来为您处理此问题。您可以使用 android 模拟器插件构建一个完整的 API 版本/屏幕尺寸矩阵,以运行您的测试。

关于android - 强制android测试从命令行批处理文件在不同的模拟器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9499147/

相关文章:

php - 在 symfony1 任务中传递数组参数的语法是什么?

php - 命令行后脚本不继续

batch-file - 无法将 "wmic csproduct get vendor/format:list | findstr/c="的输出存储为变量

java - Android 9.0 中的 ArrayIndexOutOfBoundsException

java - 如何从命令行在 Java Gradle 项目中运行 main 方法?

android - 任何人都可以确认我的后台进程与前台进程的示例吗?

用于对 URL 进行排序的 Windows 批处理文件脚本

windows - 在 Windows 上的 PostgreSQL 的单个事务中运行多个 SQL 文件

android - Instagram edittext图像图标点击功能

android - 在 Android 中以编程方式设置 HCE 的 NFC PAYMENT FOREGROUND 设置