1

私はコマンドライン(gradleタスク)からエスプレッソテストを個別に実行する方法に興味があります(グループ/スイートテストを実行してからアプリを終了し、別のグループ/テストスイート)。Androidエスプレッソテストスイート

JUnit Test Suitesを実装することが可能であることがわかっていますが、計測器テストのコンテキストでどのように見えるのかは分かりません。テストスイートごとに別々のプロセスを開始しますか? sample application on Githubがありますが、端末から実行する方法はありますか?

さらに興味深い発見はSharding testsです。しかし、それは1つの文章のドキュメントです。

エスプレッソテストを個別に実行している経験があれば誰でも共有できます。

答えて

1

これのほとんどはAndroidJUnitRunnerの一部として文書化されていますhttps://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html

のGradleを経由して、これらのパラメータを渡す方法で不足している重要な部分。

./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=*The full name of your test suite goes here* 
+0

このコマンドを試しましたが、まだ運がありません。それがどんな種類のエラーを引き起こすかを思い出すことはできません。とにかく、私はテスト・シャードが必要なものであるため、ユニット・テスト・スイートを実行することをあきらめます。とにかくありがとう。 –

1

私は個別に、または複数のデバイス上で並行してテストを実行するためにSpoonライブラリを使用することをお勧めします:あなたは、次のようなコマンドラインでオプションを指定していることを行うことができます。 jarファイルを使用するか、同じページに記載されているSpoon gradle pluginを使用します。どちらにも、セットアップに役立つ十分な文書があります。

はまた、個々のテストを実行するためにスプーンを使用することができますし、コマンドは次のようになります:

./gradlew yourSpoonTaskName -PspoonClassName=com.yourPackageName.blah.ClassName 
    -PspoonMethodName=methodName 

yourSpoonTaskName./gradlew tasksを実行しているかを知るために。あなたがスプーンに興味がないとだけは簡単な解決策は、その後、個々のテストを実行するには、次のコマンドを使用したい場合は

spoon { 
    // for debug output 
    debug = true 

    // To grant permissions to Android M >= devices 
    grantAllPermissions = true 

    // for sharding 
    /* 
    this will execute tests in parallel on multiple devices. 
    */ 
    shard = true 

    // Add this to run a specific test class & method 
    if (project.hasProperty('spoonClassName')) { 
     className = project.spoonClassName 
    } 

    if (project.hasProperty('spoonMethodName')) { 
     methodName = project.spoonMethodName 
    }  
} 

また、あなたのbuild.gradleファイルに次のスプーンの設定を追加します。

am instrument -w -r -e class com.packageName.blah.TestName#methodName com.packageName.blah.YourIntrumentationRunnerName 

AndroidStudioでテスト名を右クリックして実行すると、これらの値を簡単に特定できます。コンソールでは、テストが実行されたときにコマンド全体が表示されます。

+0

既にスプーンを試しました。しかし、意外にも私の問題は解決しません。私が扱っている問題は、有名な「OutMemoryError」のためエスプレッソ・テストがクラッシュすることです。 1つのサードパーティ製ライブラリでメモリが大量に依存するため、メモリがリークされ、置き換えられません。私は、複数のエミュレータでテストを実行することで、問題が一時的に解決されると思っていましたが、適切な解決策を見つけることができます。 –

+0

あなたの最初の声明がこれについて何も言及しなかったので、OutMemoryError 問題を早期に言及した方が良いでしょう。あなたが知りたかったのは、私があなたに語ったテストシャーディングのやり方でした。より詳細に説明すると、あなたの実際の問題にお答えできます。いくつかのログも役に立ちます。 –