在特定设备上运行gradle的connectedAndroidTest

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变量

你可以这两种方式:

1.设置环境变量

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

./gradlew <...>
Run Code Online (Sandbox Code Playgroud)

2.仅为命令"设置"

ANDROID_SERIAL=1000AB0123456YZ ./gradlew <...>
Run Code Online (Sandbox Code Playgroud)

如果设置/导出ANDROID_SERIAL(方法#1),则可以使用此选项覆盖单个命令.

注意

这也适用于模拟器标识符(例如,"emulator-5554").


Sco*_*rta 12

它不受支持.为文档connectedCheckhttp://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来跟踪其进度


Car*_*rva 5

我创建了一个"hack"来做到这一点..将这个块放在build.gradleandroid部分中,然后你必须将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上测试.