2016-02-07 9 views
10

Androidプロジェクトでbuild.gradleを設定して、各デバッグまたはリリースビルドの前にすべてのユニットテストを実行するにはどうすればよいですか? dependsOnでタスクの依存関係を設定できることは分かっていますが、単体テストタスクでどのように指定できますか?私は私のプロジェクトの各(AndroidとプレーンJava)モジュールでこれをやりたいのですが、それは可能でしょうか?各ビルド前のユニットテストを実行する

答えて

10

ユニットテストのみを実行する特別なタスクがありますか?あるいは、単純にtest(またはもっと一般的にはtestDebugtestRelease)のように自由に実行できますか?たとえば、assembleDebugまたはassembleReleaseタスクを呼び出すたびにtestDebugまたはtestReleaseを実行するとします。あなたは、あなたが指摘したように、dependsOnタスクプロパティを使用することができます。たとえば、この方法:この構成では、あなたがそれを必要とする、(プロジェクトのすべてのモジュールで)すべてのbuild.gradleスクリプトに追加する必要があります

assembleDebug.dependsOn testDebug 
assembleRelease.dependsOn testRelease 

。あなたがテストtasksmの数を持っている場合は、タスクの依存関係をこのように設定することができます。

tasks.assembleRelease.dependsOn { 
    project.tasks.findAll { task -> 
     task.name.startsWith('testRelease') 
    } 
} 

は確かに、あなたはあなたができる(allprojectsまたはsubprojectsを使用することにより、ルートルートbuild.gradleスクリプトでこの依存関係を設定してみてくださいそれについてはhereを読んでください)。しかし、androidプラグインをルートスクリプトにも適用する必要があります。それ以外の場合、タスクは見つかりません。

+2

参照してください。私は単純なJUnitテストしか今は持っていません。私のプレーンなJavaモジュールでは、すべてのファイルがgraleファイルの最後に 'jar.dependsOn test'で正常に動作しているようです(テストが失敗した場合、ビルドは停止します)。私のAndroidモジュールで 'assembleDebug.dependsOn testDebug'を実行すると、' BuildType_Decorated'で 'testDebug'プロパティを見つけることができませんでした。この行はどこに置くべきですか?ありがとう! – manfcas

1

「実行/デバッグ構成」に移動し、アプリケーション構成を選択します。右パネルの下部にある[起動前:]の下の[+]ボタンをクリックし、[別の設定を実行]を選択します。ここで、テストを実行するための構成を選択します。

起動する前に、テストケースコマンドを実行して実行してください。他enter image description here

enter image description here

前のGradleタスクのために私はAndroidとプレーンJavaモジュールの両方でプロジェクトを持っているhere

+0

ありがとう、私はこのオプションについて知りませんでした!しかし、このように、設定は 'build.gradle'ファイルには含まれていないので、VCSで共有されません。私はそれを私のチームのすべてと共有したいと思います。 – manfcas

+0

README.mdファイルのステップを更新して、IDE設定をエクスポートしてチームと共有することができます(ファイル>エクスポート設定)。 –

+0

でも、CIサーバーを構築しても同じ問題があります。 – manfcas

関連する問題