在一台计算机中,我有多个模拟器/设备,可以从adb设备中分辨出来。192.168.56.102:5555192.168.56.103:5555
我想通过gradle命令同时在不同的设备上运行不同的测试,例如
./gradlew -Pandroid.testInstrumentationRunnerArguments.class=ccom.example.android.testapp1 connectedAutomationDebugAndroidTest --info
./gradlew -Pandroid.testInstrumentationRunnerArguments.class=ccom.example.android.testapp2 connectedAutomationDebugAndroidTest --info
有没有什么方法可以添加一些参数,比如"adb-s"来指定我希望它运行的设备?
目前,我唯一的替代方法是使用gradle运行installApp任务,然后使用2个"adb-s"命令分别运行两组不同的测试,并使用"&"连接。
提前感谢!
OP提出了多个问题,但上下文相同,因此下面有多个部分。
指定任务
要指定任务,首先找到任务名称:
chmod +x ./gradlew
./gradlew tasks
然后简单地传递它,比如:
./gradlew myCustomTask
或者,将任务限制在特定项目中:
./gradlew :my-sub-project:myCustomTask
指定AVD(Android虚拟设备)
不支持将AVD名称传递给Gradle,除了启动Emulator之外,不支持。
因此,指定AVD的唯一方法是确保只有您想要的单个AVD已经在Emulator中运行(在启动Gradle之前)。
换句话说,将使用Emulator中已经运行的任何AVD:
- 对于exmaple,如果你想";重新运行测试,但在另一个具有不同Android版本的AVD上"
- 你需要先等到之前的测试结束
- 然后关闭Emulator,并使用其他AVD重新启动Emulator
至少,可以通过CLI将AVD传递给Emulator,例如:
%ANDROID_HOME%emulatoremulator.exe -netdelay none -netspeed full -no-snapshot -no-snapshot-load -avd MyNameForAVD
或者在MacOS:中
${ANDROID_HOME}/emulator/emulator -netdelay none -netspeed full -no-snapshot -no-snapshot-load -avd MyNameForAVD