web-dev-qa-db-ja.com

特定のデバイスでgradleのconnectedAndroidTestを実行する

特定のデバイスでconnectedAndroidTestをどのように実行しますか?

私は次のようなものを期待します:

./gradlew connectedAndroidTest -DconnectedAndroidTest.device=XXXX

CIサーバーに多数のデバイスが接続されていますが、接続されている特定のデバイスをターゲットにする方法に関するドキュメントが見つからないようです。

connectedAndroidTestは、現在接続されているすべてのデバイスでテストを実行します。

ありがとう。

20
Nick Palmer

使用 Android_SERIAL変数

これは2つの方法で実行できます。

1.環境変数を設定します

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

./gradlew <...>

2.コマンドだけの「設定」

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

Android_SERIAL(メソッド#1)を設定/エクスポートした場合、これを使用して1つのコマンドのオーバーライドを行うことができます。

注意

これは、エミュレーター識別子(「emulator-5554」など)でも機能します。

10
MotohawkSF

サポートされていません。 http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasksconnectedCheckのドキュメント。 connectedAndroidTestは、これらの種類のデバイス上の非UI自動テストについて、明示的に次のように述べています。

接続されたデバイスまたはエミュレーターを必要とするチェックを実行します。これらは、接続されているすべてのデバイスで並行して実行されます。

個々のデバイスを選択する機能に対する機能要求があります。進行状況は https://code.google.com/p/Android/issues/detail?id=66129 で追跡できます。

12
Scott Barta

それを実行できるように「ハック」を作成しました。このブロックをbuild.gradleAndroidセクションに配置し、Android_HOMEenv変数をに設定する必要があります。 sdkフォルダー、およびテストを実行するデバイスのシリアル番号を含むUNIT_TESTS_DEVICE_IDenv変数。

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;
    }
})

次に、タスクsingleDeviceAndroidTest{Variant}を使用してテストを実行します。 Gradleプラグインバージョン1.0.0でのみテストされています。

5
Carlo Conserva

これで可能になるはずです。 Android_SERIAL環境変数をテストを実行するデバイスIDに設定するだけです。

3
Praveen