在特定设备上运行gradle的connectedAndroidTest

时间:2014-05-30 17:54:12

标签: android gradle android-gradle

如何在特定设备上运行connectedAndroidTest

我希望有类似的东西:

./gradlew connectedAndroidTest -DconnectedAndroidTest.device=XXXX

我们的CI服务器中插入了许多设备,似乎无法找到有关如何定位特定连接设备的任何文档。

connectedAndroidTest目前在所有连接的设备上运行测试。

感谢。

5 个答案:

答案 0 :(得分:12)

不支持。 connectedCheck connectedAndroidTest的文档,代表{{1}}进行这些类型的设备上非UI自动化测试,明确指出:

  

运行需要连接设备的检查或   模拟器。它们将并行运行在所有连接的设备上。

有一项功能要求可以选择单个设备;您可以在http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks

跟踪其进度

答案 1 :(得分:8)

使用ANDROID_SERIAL变量

您可以通过两种方式执行此操作:

1。设置环境变量

# Set once; all following gradlew commands will use this
export ANDROID_SERIAL=1000AB0123456YZ

./gradlew <...>

2。只需命令即可“设置”

ANDROID_SERIAL=1000AB0123456YZ ./gradlew <...>

如果您设置/导出了ANDROID_SERIAL(方法1),则可以使用它替代单个命令。

注意

这也适用于模拟器标识符(例如“ emulator-5554”)。

答案 2 :(得分:5)

我创建了一个“hack”以便能够执行此操作..将此块放在 build.gradle android部分中,然后您必须设置{{ 1}} env变量到sdk文件夹,ANDROID_HOME env变量和要运行测试的设备的序列号。

UNIT_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; } }) 运行测试。仅在gradle插件版本1.0.0上测试。

答案 3 :(得分:2)

现在应该有可能。只需将ANDROID_SERIAL环境变量设置为要运行测试的设备ID。

答案 4 :(得分:0)

@MotohawkSF的答案在Android Studio终端中对我不起作用。不过有效的是在运行adb devices

之后使用设备的名称
> adb devices
List of devices attached
192.168.22.122:5555    device
emulator-5554   device

然后

set ANDROID_SERIAL=192.168.22.122:5555
gradlew someTask