Nic*_*mer 19 android gradle android-gradle-plugin
你如何connectedAndroidTest在特定设备上运行?
我希望有类似的东西:
./gradlew connectedAndroidTest -DconnectedAndroidTest.device=XXXX
Run Code Online (Sandbox Code Playgroud)
我们的CI服务器中插入了许多设备,似乎无法找到有关如何定位特定连接设备的任何文档.
connectedAndroidTest 目前在所有连接的设备上运行测试.
谢谢.
小智 13
ANDROID_SERIAL变量你可以这两种方式:
# Set once; all following gradlew commands will use this
export ANDROID_SERIAL=1000AB0123456YZ
./gradlew <...>
Run Code Online (Sandbox Code Playgroud)
ANDROID_SERIAL=1000AB0123456YZ ./gradlew <...>
Run Code Online (Sandbox Code Playgroud)
如果设置/导出ANDROID_SERIAL(方法#1),则可以使用此选项覆盖单个命令.
这也适用于模拟器标识符(例如,"emulator-5554").
Sco*_*rta 12
它不受支持.为文档connectedCheck在http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks,委托给connectedAndroidTest这些各种各样的设备上的非UI自动化测试,明确说明:
运行需要连接设备或仿真器的检查.它们将并行运行在所有连接的设备上.
有一项功能要求可以选择单个设备; 您可以访问https://code.google.com/p/android/issues/detail?id=66129来跟踪其进度
我创建了一个"hack"来做到这一点..将这个块放在build.gradle的android部分中,然后你必须将env变量设置为sdk文件夹,并将env变量设置为序列号为要在其上运行测试的设备.ANDROID_HOMEUNIT_TESTS_DEVICE_ID
deviceProvider(new com.android.builder.testing.ConnectedDeviceProvider(file(System.getenv("ANDROID_HOME") + File.separator + "platform-tools" + File.separator + "adb")) {
public String getName() {
return "singleDevice"
}
public List<? extends com.android.builder.testing.api.DeviceConnector> getDevices() {
List<com.android.builder.testing.api.DeviceConnector> devices = super.devices;
List<com.android.builder.testing.api.DeviceConnector> toReturn = new ArrayList<>();
String deviceSerialNum = System.getenv("UNIT_TESTS_DEVICE_ID");
devices.each {
if (it.getSerialNumber().equals(deviceSerialNum)) toReturn.add(it);
}
if (toReturn.isEmpty()) {
throw new RuntimeException("Device for unit tests not found!");
}
return toReturn;
}
})
Run Code Online (Sandbox Code Playgroud)
然后使用该任务singleDeviceAndroidTest{Variant}运行测试.仅在gradle插件版本1.0.0上测试.
| 归档时间: |
|
| 查看次数: |
9491 次 |
| 最近记录: |