1

私はAndroidスタジオのAndroidTestsディレクトリの下でいくつかのアンドロイド計測テストを行っています。もちろん、私は手動でテストを実行することができますが、各ビルド後にスイート内のすべてのテストを実行する必要があります(通常のデバッグビルドではなく、ビルドのリリース)。新しいアプリのapkをリリースする前に、新しいコードをテストと照合して検証したいので、これを行う必要があります。どうやってするか?私はそれをGoogleにしましたが、まだ適切な解決策を見つけられませんでした。各リリースビルドの前に、gradleを使ってAndroidテストを実行する方法は?

答えて

4

最後に私はそれをやりました。私はリリースAPKを構築する際に、すべてのAndroidのテストを実行することができるよということやった後

// execute android tests before realising a new apk 
tasks.whenTaskAdded { task -> 
    if (task.name == 'assembleRelease') 
     task.dependsOn('connectedAndroidTest') 
} 

android { 
signingConfigs { 
    release { 
     keyAlias 'key' 
     keyPassword 'password' 
     storeFile file('/path/to/release_keystore.jks') 
     storePassword 'password' 
    } 

} 
buildTypes { 
    debug { 
     signingConfig signingConfigs.release 
    } 
    release { 
     signingConfig signingConfigs.release 
    } 
} 

:私は私のAndroid Studioプロジェクトでの私のbuild.gradleファイルに次の設定を追加しました。テストに失敗した場合、apkは構築されません。

0

私はある特定のトピック:Continuous Integrationで潜水するべきだと思います。

これは、すべてのビルドやコミット後にテストスイートを実行し、バリエーションを作成し、Google Playなどで公開することができます。古典的なJenkins CIで始まります。ユーザーフレンドリーなツールですが、TravisまたはCircle CIと比較して、巨大な設定の可能性、素敵なアプリコミュニティがあり、無料で使用できます。この記事で

スタート:http://www.vogella.com/tutorials/Jenkins/article.html

その他のツール:私はすでに私のGithubプロジェクトのためTravisを使用していますが、Circle CIまたはGreen House CIも良い選択かもしれません。

は、それはあなたがdependsOnメソッドを使用して、タスクの依存関係を定義することができ、一般的には

+0

はい、あなたは正しいですが、私は単純なアプリを開発しているので、今は必要ありません。私は今のところCIは必要ありません。私は単なるソロ開発者です。とにかく参考に感謝しますが、私は別のものを探していますが、私は簡単な答えが必要なものを求めていますが、おそらくそうではないと思っています。 :-) – Daniele

+0

Jenkinsは仕事を変えるのが賢明なら、素晴らしいオープンソースのツールで素晴らしいスキルです。私はすでに私の本当に小さなプロジェクトを使用してトラビス、私のgithubを確認ニックネームは私のユーザー名と同じです – piotrek1543

2

を助けることを願っています。

例えば:

assemble.dependsOn test 

をあなただけのリリースのための依存関係を指定したい場合:

task A << { 
    println 'Hello from A' 
} 

task B << { 
    println 'Hello from B' 
} 

B.dependsOn A 

あなたが指定することができますあなたのケースでは

> gradle -q B 
Hello from A 
Hello from B 

を取得しますビルド:

assembleRelease.dependsOn test 

用途:

connectedAndroidTest接続エミュレータやデバイス上でテストを実行します。
testローカルホストで単体テストを実行します。

+0

私はそれのような何かを考えるが、 "テスト"ですか?グラデルによって認識されません。私はそれをどこかに指定する必要がありますか? – Daniele

+0

@Danieleユニットテストを実行するためにテストを使用するか、アンドロイドテストを実行するconnectedAndroidTest –

+0

okこれを追加しました:tasks.whenTaskAdded {task-> if(task.name == 'assembleRelease') task.dependsOn( 'connectedAndroidTest' ) }これで動作するようですが、問題は署名証明書の問題でテストが実行されないことです。問題はconnectedAndroidTestが "リリース"タイプのビルドではなく "ビルド"タイプに対してテストを実行することです。詳細はこちら:http://stackoverflow.com/questions/23923218/android-gradle-running-tests-on-non-debug-builds今何をすべきか明確ではない。 – Daniele

関連する問題