3

さまざまな Gradle タスクから実行したいいくつかのテスト スイートがあります。それぞれに異なるセットまたは依存関係があり、異なるtestInstrumentationRunner. たとえば、次のコマンド ライン機能が必要です。

gradle connectedAndroidTest unitTest

  • androidTestCompileとからの依存関係を使用するunitTestCompile
  • /src/androidTestディレクトリと/src/unitTestディレクトリの両方でテストを実行します
  • 標準を使用しますtestInstrumentationRunner

gradle connectedAndroidTest uiTest

  • androidTestCompileとからの依存関係を使用するuiTestCompile
  • /src/androidTestディレクトリと/src/uiTestディレクトリの両方でテストを実行します
  • 「com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner」をそのtestInstrumentationRunner

これは可能ですか - おそらくバリアントまたはフレーバーで?

4

1 に答える 1

2

これを行う方法はいくつか知っていますが、これが最も簡単です。私は最近、Google が提供する小、中、大のアノテーションを使用してこれを実現しました。通常、単体テストは小規模および中規模のテストであり、Espresso テストは大規模なテストです ( Google はこの背後にあるロジックを説明しています)。

ここから、カスタム ビルド構成フィールドを作成し、それを build.gradle ファイルに次のように設定します。

defaultConfig {
   ....
   buildConfigField "String", "TEST_SIZE", project.hasProperty('testSize') ? "\"${testSize}\"" : "null"
}

カスタム テスト ランナーでは、テストを実行する前に最後の 1 秒間の調整を処理できます。ビルド構成からテスト値を取得し、それを送信する前に引数に設定すると、その注釈を持つテストのみが実行されます。

    String sizeValue = BuildConfig.TEST_SIZE;
    if(!TextUtils.isEmpty(sizeValue)){
        arguments.putString("size", sizeValue);
    }

コマンド ラインから、次のコマンドを実行します。

./gradlew connectedAndroidTest -PtestSize=small

また、構造を少し単純化するために、すべてのテストを androidTest ディレクトリに置くことができます。また、特定のフォルダーを特定したい場合は、上記と同じロジックを使用してこれを行い、別の引数を使用するだけです。どの引数に設定する必要があるかを知っておく必要があります。シェルを介してテストを実行していないことを心配しないでください。引数は同じです。

于 2014-06-05T22:46:06.143 に答える