使用Android gradle 1.1.1的Android AssertJ 1.0.0

这是我的build.gradle有冲突的一部分:

 ... dependencies { classpath 'com.android.tools.build:gradle:1.1.1' } ... testCompile( 'com.squareup.assertj:assertj-android:1.0.0' ) ... 

我在日志中看到的问题:

 WARNING: Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (21.0.3) and test app (20.0.0) differ. 

显然,它从类path中消除了冲突的依赖。 我不确定它是gradle还是android gradle插件。

我已经尝试了下一个:

  testCompile( 'com.squareup.assertj:assertj-android:1.0.0' ) { exclude group: 'com.android.support', module: 'support-annotations' } 

但我仍然有编译错误,所以依赖项被排除在外。

我已经尝试了下一个:

 configurations.all { resolutionStrategy { // fail eagerly on version conflict (includes transitive dependencies) // eg multiple different versions of the same dependency (group and name are equal) failOnVersionConflict() // force certain versions of dependencies (including transitive) // *append new forced modules: force 'com.android.support:support-annotations:21.0.3' // *replace existing forced modules with new ones: forcedModules = ['com.android.support:support-annotations:21.0.3'] } } 

但看起来不起作用,因为它不是在第一次冲突失败,我仍然有编译错误。

你的build议是什么?

更新我的意思是通过删除依赖 – 我看到了很多assertj没有find编译错误

Solutions Collecting From Web of "使用Android gradle 1.1.1的Android AssertJ 1.0.0"

我遇到了同样的问题。 这对我来说是固定的:

 testCompile('com.squareup.assertj:assertj-android:1.0.0'){ exclude group: 'com.android.support', module:'support-annotations' } 

好。 android-assertjaar库的问题。 所以我们需要额外的努力来确保aar解压缩来build\intermediates

我很确定这个function包含在robolectric-gradle插件中。 但现在不行。

为了解决问题,我下载了android-assertj aar并解压缩了它。 我将classes.jar重命名为android-assertj.jar (欢迎旧时光)并移至lib文件夹。

而我在我的gradle中将android-asserj依赖关系replace为next:

  testCompile files( 'lib/android-assertj.jar' ) testCompile 'org.assertj:assertj-core:1.6.0' 

所以testing被编译并且能够运行。 但是失败了。

为了解决它,我还将我的清单文件的位置添加到configuration中:

 @Config( emulateSdk = 18, reportSdk = 18, manifest = "src/main/AndroidManifest.xml" ) 

这个testing是从控制台而不是从AS工作。 我必须现在与AppCompat资源:)

快乐的testing!

UPD:最新的android gradle插件不需要这个解决方法

接受的答案不适合我。 但是,添加以下内容对我来说是有用的:

 androidTestCompile 'com.android.support:support-annotations:23.0.1' 

和:

 testCompile 'com.android.support:support-annotations:23.0.1' 

根据https://stackoverflow.com/a/29947562/2832027

你需要改变:

 testCompile( 'com.squareup.assertj:assertj-android:1.0.0' ) { exclude group: 'com.android.support', module: 'support-annotations' } 

至:

 compile('com.squareup.assertj:assertj-android:1.0.0') { exclude group: 'com.android.support', module: 'support-annotations' } 

还要确保你的testing文件夹被称为test而不是androidTest