我最近开始使用 Android Studio 和 gradle 进行 android 开发,发现它总体上比 eclipse/ant 或 maven 好得多。然而,我最近开始尝试用我的应用程序实现某种单元和/或集成测试。我能够使用谷歌最近发布的 Espresso 框架进行基本测试。尽管我需要模拟和注入对象的模拟版本,但我进行了一些测试。我过去在另一个项目中使用过 dagger,所以我将 dagger 包含在我的项目中。但是,由于以下错误,现在我的测试将无法运行:
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 框架中有关 dagger 的一些静态初始化代码引起的。因此,在向 instrumentTestCompile 添加 dagger 依赖项后,我得到了上面提到的 IllegalAccessError。
任何人都有运气,包括在您的项目中使用匕首并进行浓缩咖啡测试?