使用android gradle dagger运行instrumentTests

前端之家收集整理的这篇文章主要介绍了使用android gradle dagger运行instrumentTests前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近开始使用 Android Studio和gradle进行Android开发,并且发现它比eclipse / ant或maven更好.但是我最近开始尝试使用我的应用程序实现某种单元和/或集成测试.我能够使用谷歌最近发布的Espresso框架进行基本测试.我有一些测试,但我需要模拟和注入模拟的对象版本.我过去用过匕首换另一个项目,所以我把匕首放进了我的项目.但是现在我的测试因为以下错误而无法运行:
gradle connectedCheck

4.1.2 Failed: Instrumentation run Failed due to ‘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添加dagger依赖项之后,我得到了上面提到的IllegalAccessError.

任何人都有运气,包括你的项目中的匕首和做咖啡测试?

解决方法

花了很长时间,但我终于开始工作了.我必须做以下事情:

>像这样声明我的依赖:

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-runtime-1.0-SNAPSHOT.jar')
  instrumentTestCompile files('libs/hamcrest-core-1.1.jar','libs/hamcrest-library-1.1.jar','libs/hamcrest-integration-1.1.jar')
  instrumentTestCompile 'com.google.guava:guava:14.0.1'
}

>从here复制hamcrest罐子
>从这样的jar中删除许可证文件(否则你会收到有关重复的LICENSE.txt文件错误)

zip -d hamcrest-core-1.1.jar LICENSE.txt
zip -d hamcrest-library-1.1.jar LICENSE.txt

>运行gradle connectedCheck

有几点需要注意: – Hamcrest 1.3对我不起作用,得到一个关于匹配器丢失的错误 – 疯狂有多少箍我必须跳过才能到达这里. – 祝你好运与android studio一起玩得好.

猜你在找的Android相关文章