2013-06-04 3 views
11

私たちのAndroidアプリは自動テストが必要で、私たちのグループはRobotiumを使ってそれを処理しています。これは単体テストでは問題ありませんが、バックエンドサーバーでもクライアントを実行するための一連のエンドツーエンド統合テストを作成しています。私はこれを行ういくつかのテストを持っていますが、可能であれば、単体テストとは別にそれらを分解して、私たちの継続的な統合ビルドでは、実行するためにライブサーバーを実行する必要はありません。新しいGradle Build Systemを使用してAndroidで統合テストを行う方法は?

私たちは光沢のある新しいGradleビルドシステムを使用しています。テスト専用のフレーバーや親APKに依存するサブプロジェクトのようなことができるかどうかは疑問です。私は、ソースレスデバッグAPKをテストするためにRobotium命令を使用して、別のプロジェクトでこの作業を行いましたが、うまくいきませんでした。たぶん私はエミュレータではなく、実際のハードウェア上にあったからです。ハードウェアアクセラレーションがインストールされていても、私はエミュレータに不運がありました。

アドバイスがありますか、またはビルド中に統合サーバーを使用する必要があるビルドで息を止めてロールアウトするだけでよいですか?

答えて

11

Maven instructionsによると、robotium-soloをコンパイルの依存関係として追加するだけです。

repositories { 
    mavenCentral() 
} 

dependencies { 
    instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' 
} 

これにより、クラスパスにrobotium-solo.jarファイルがあることが保証されます。その後、src/instrumentTestディレクトリにテストを定義し、gradle buildを実行します。それが動作するかどうかを確認する

約1年前にmavenからgradleに変換したので、私はできる限り手伝っていきます。

sourceSets { 
    integrationTest { 
     // Gives you access to the compiled classes in your tests 
     compileClasspath += main.output 
     runtimeClasspath += main.output 
    } 
} 

dependencies { 
    integrationTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' 
} 

// To run the tests: ./gradlew integrationTest 
task integrationTest(type: Test) { 
    testClassesDir = sourceSests.integrationTest.output.classesDir 
    classpath = sourceSets.integrationTest.runtimeClasspath 
} 

注:ソリューションがそうのように設定されたカスタム・ソースを指定することがあるので、

* EDIT OPは、テストはGradleのビルドから個別に実行したかった私は、Android SDKがインストールされていませんこのコンピュータ。 main.outputが動作しない場合はandriod.sourceSets.main.outputで試してみてください。

+0

私はそれが働いている。私が欲しいのは、サーバ依存の統合テストをサーバーに依存しないテストから分離して、Jenkinsが動作するプロダクトサーバを必要としないようにする方法です。 – Argyle

+0

ああ、そうです。その場合は 'integrationTest'という名前の' build.gradle'にカスタムソースセットを作成します。依存関係クロージャで、 'compileIntegrationTest'を利用できるようになります。そこでは、ロボティクスを追加することができます。これらの統合テストを実行するタスクを追加します。カスタムソースセットを指定することによって 'gradle build'はデフォルトでそれらを実行しません。それらを実行するには、カスタムタスクを追加する必要があります。私はいくつかのソースで私の答えを修正します。 – Joe

+3

これは 'instrumentTestCompile'ではありませんか? –

関連する問題