web-dev-qa-db-ja.com

Android非デバッグビルドでのGradle実行テスト

デバッグ、ベータ、リリースの3つの異なるビルドタイプのプロジェクトがあります。私のテストパッケージは常にデバッグビルド用に作成されていますが、QAはベータビルドを使用しており、QAが膨大な数のデバイスでこれらのテストを実行することを望んでいます。

ベータビルドと同じキーで署名されたQAのテストAPKを作成しようとしています。 Android-Gradleのドキュメントを見ると、これができないことを示すものは何もありませんが、これを構成する方法はわかりません。とにかく、テストAPKをアセンブルするときに使用するキーストアを構成できますか?または、署名されていないテストAPKを作成する方法はありますか?

21
Maxwell

これは、あなたができないことを文書化するという点であなたの質問に対する不完全な答えですが、プロジェクトでconnectedAndroidTestテストを実行するandroidTestタスクは、実行するようにハードコードされていますdebugビルドタイプですが、別のビルドタイプを指す方法がわかりません。

Gradleでタスクの依存関係を一覧表示する方法はありますか? からアドバイスを受けて、次のコマンドを実行した場合、タスクの依存関係ツリーを調べます。

./gradlew tasks --all

あなたはあなたの出力でこれを得る:

Verification tasks
------------------
app:check - Runs all checks. [app:lint]
app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest]
app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest]
app:deviceCheck - Runs all device checks using Device Providers and Test Servers.

connectedAndroidTestタスクのドキュメントでは、debugに対してテストを実行すると主張しており、タスクの依存関係(-allフラグで表示)は、タスクがassembleDebug

ビルドタイプとフレーバーを追加しても、組み込みのdebugタイプへの依存性には影響しないようです。

私よりもGradle-fuが大きい場合は、タスクを再配線してテストを別のビルドタイプに依存させることができますが、APIでサポートされていないものに依存するため、これを行うと脆弱になる可能性があります。 Android Gradleプラグイン。

ただし、質問に最も直接的に答えるために、別の証明書を使用してビルドに対してテストを実行するだけの場合は、ベータ証明書を使用するようにdebugビルドの署名構成を変更できます。

Android {
    signingConfigs {
        beta {
            keyAlias 'key'
            keyPassword 'password'
            storeFile file('/path/to/beta_keystore.jks')
            storePassword 'password'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.beta
        }
        beta {
            signingConfig signingConfigs.beta
        }
    }
}

私はそれをテストし、この方法でカスタムキーストアを使用するデバッグビルドに対してandroidTestターゲットを実行することができます。ただし、ベータ版に対してテストを実行したいと思うので、これで問題が解決するとは思えません。 ビルド、ベータ版のデバッグビルドではありません 証明書

14
Scott Barta

これを別のターゲットに向けることができます。これがいつ発生したかはわかりませんが、 ドキュメントから:

現在、1つのビルドタイプのみがテストされています。デフォルトではデバッグビルドタイプですが、これは次のように再構成できます。

Android {
    ...
    testBuildType "staging" 
}
47
JRaymond

ビルドバリアントのテストソースセットを追加するには、次の手順に従います。

  • 左側の[プロジェクト]ウィンドウで、ドロップダウンメニューをクリックし、[プロジェクト]ビューを選択します。
  • 適切なモジュールフォルダ内で、srcフォルダを右クリックし、[新規]> [ディレクトリ]をクリックします。
  • ディレクトリ名として「androidTestVariantName」と入力します。たとえば、「MyFlavor」というビルドバリアントがある場合、ディレクトリ名は「androidTestMyFlavor」になります。次に、[OK]をクリックします。
  • 新しいディレクトリを右クリックし、[新規]> [ディレクトリ]をクリックします。ディレクトリ名として「Java」と入力し、「OK」をクリックします。

これで、上記の手順に従って新しいテストを追加することにより、この新しいソースセットにテストを追加できます。 [宛先ディレクトリの選択]ダイアログが表示されたら、新しいバリアントテストソースセットを選択します。

src/androidTest/ソースセットのインストルメント化されたテストは、すべてのビルドバリアントで共有されます。アプリの「MyFlavor」バリアントのテストAPKをビルドする場合、Gradlesrc/androidTest/src/androidTestMyFlavor/ソースセットの両方を組み合わせます。 ==

もう1つの方法は、次の行をデフォルトの構成にすることです。

現在、1つのビルドタイプのみがテストされています。デフォルトではデバッグビルドタイプですが、これは次のように再構成できます。

Android {
    ...
    testBuildType "staging"
}
2
Anudeep Samaiya