3

私はアンドロイドアプリのUI/Functional instrumentationテストを自動化するためにSpoon and Espressoを使用しています。AndroidテストSharding with Spoon

私はテスト実行時間を短縮できるように、複数の接続されたデバイスやエミュレータにインストルメンテーションテストを配布する方法があるかどうかを知りたいと思います。

例:1エミュレータで実行するのに15分かかります。より多くのエミュレータを追加する方法(4つ)、各エミュレータに75のテストを配布してテストの実行時間を短縮する方法はありますか?

あなたの入力をこの点で評価してください。

答えて

0

[選択]ダイアログで複数のデバイスを選択できます。クリックするとShiftまたはCTRLキーが押されます。

もう1つの解決策は、Gradleを使用することです。 Androidスタジオの右側でGradle、次にverification、最後にconnectedAndroidTestを選択します。それはあなたがコンソールに置くのと同じ効果を与えるだろう:

./gradlew connectedAndroidTestまたはgradlew.bat connectedAndroidTest

私はすべての利用可能なデバイス(物理およびエミュレータ)上のすべてのテストケースを実行します意味します。正確にどのテストクラスを選択するにはタスクbuild.gradleにする必要があります。

プログラミング言語の基礎を学び、より効率的にGradleタスクスクリプトを書くことができます。ここではGroovyで書かれたタスクの例です:Run gradle task X after "connectedAndroidTest" task is successful

また、あなたはコミットごとに固有のテストケースを実行するように設定することができ、およそContinuous IntegrationJenkins、またはTravisのようなそのツールを学ぶことがあります。例として は私のAndroidプロジェクトのこのビルドログを見てみてください。https://travis-ci.org/piotrek1543/WeatherforPoznan/builds/126944044 、ここではトラヴィスの設定です:https://github.com/piotrek1543/WeatherforPoznan/blob/master/.travis.yml

任意のより多くの質問がありますか?お気軽にお問い合わせください。

は、それはあなたがauto-shardingと呼ばれている探しているものを

+0

お返事ありがとうございます。私はこのポストで私の質問で私は明確でない場合は申し訳ありません。継続的な統合の一環として、開発者がプッシュするすべてのコミットに対して、Androidエミュレータで約500のテストを実行します。これは現在25分を要しており、テストを追加するにつれて増加します。私はここで、正確に同じ設定の2つ以上のAndroidエミュレータにこれらの500のテストを配布することによって、実行時間を短縮する方法を探していました。あなたはこれについて何か考えがある場合はお勧めします。 –

1

を助け願っています。スプーンランナーに--shardと電話し、接続されているすべてのデバイスのシリアルを-serialで追加する必要があります。シリアル番号はadb devicesで見つけることができます。

+0

ありがとうございます。これは私が試したオプションです。しかし、2つ以上のエミュレータを追加して自動シャーディングを行うと、ランダムにエスプレッソ・テストが失敗するのを見ています。しかし、私は1つのエミュレータを持っている場合は、ランダムなテストの失敗はありません。あなたはこの問題に遭遇しましたか? –

+0

あなたのランダムに失敗したテストに関して、私は特に実際のデバイスと同様の失敗を経験しました。しかし実際の実装の問題であることが判明しました。インストルメンテーションは別のスレッドで実行されているため、マルチスレッドが必要です。希望が役立ちます。 – WenChao

+0

私は2つのセントをここに追加したいと思っています。同じ問題に直面しても、シャードオプションを使用した後でランダムテストが失敗してしまいました。失敗したテストは、別のデバイスで実行されている他のテストに依存していることがわかったため、これらのテストを修正して完全に独立させ、期待通りに機能しました。 しかし、それは@WenChaoが言及した理由のためかもしれません。 –