私は最近、Android 開発のために Android Studio と gradle を使い始めましたが、全体的に eclipse/ant や maven よりもはるかに優れていることがわかりました。ただし、最近、ある種の単体テストやアプリとの統合テストを実装しようとし始めました。Google が最近リリースした Espresso フレームワークを使用して、基本的なテストを機能させることができました。オブジェクトのモック バージョンをモックしてインジェクトする必要がある場合に、いくつかのテストを行いました。過去に別のプロジェクトで短剣を使用したので、短剣をプロジェクトに含めました。ただし、次のエラーのため、テストが実行されません。
gradle connectedCheck
...
4.1.2 失敗: 'java.lang.IllegalAccessError' :EspressoApp:connectedCheck が原因でインストルメンテーションの実行に失敗しました
ここで簡単なデモを作成しました: https://github.com/mwolfe38/android-espresso-dagger
クローンを作成してから、コマンドラインから次を実行します: gradle connectedCheck
上記では、依存関係をいくつかの異なる方法で試しましたが、もともとは次のようでした:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile 'com.squareup.dagger:dagger-compiler:1.1.0'
compile 'com.squareup.dagger:dagger:1.1.0'
instrumentTestCompile files('libs/espresso-1.0-SNAPSHOT.jar',
'libs/testrunner-1.0-SNAPSHOT.jar',
'libs/testrunner-runtime-1.0-SNAPSHOT.jar')
instrumentTestCompile 'org.hamcrest:hamcrest-all:1.3'
instrumentTestCompile 'com.google.guava:guava:15.0'
}
しかし、静的初期化に関するエラーが発生します。これは、短剣に関する espresso フレームワークの静的初期化コードが原因のようです。したがって、短剣の依存関係を instrumentTestCompile に追加した後、上記の IllegalAccessError が発生します。
あなたのプロジェクトに短剣を含めて、エスプレッソのテストを行っている人はいますか?