8

Here is part of my build.gradle that has conflict:

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

The issue that I see in log:

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

Apparently it removes conflicting dependency from the classpath. I'm not sure if it is gradle or android gradle plugin.

I've tried next:

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

But I still have compilation errors so dependency is excluded.

I've tried next:

configurations.all {
  resolutionStrategy {
    // fail eagerly on version conflict (includes transitive dependencies)
    // e.g. 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']
  }
}

But looks like it doesn't work since it is not failing on the first conflict and I still have compilation errors.

What will be your suggestions?

UPDATE What do I mean by removing dependency - I see a lot of compile errors that assertj not found

Eugen Martynov
  • 19,888
  • 10
  • 61
  • 114

3 Answers3

7

I ran into the same issue. This fixed it for me:

testCompile('com.squareup.assertj:assertj-android:1.0.0'){
    exclude group: 'com.android.support', module:'support-annotations'
}
Cain Wong
  • 284
  • 1
  • 5
  • Doesn't work for me. I still see a lot `error: package org.assertj.android.api does not exist import static org.assertj.android.api.Assertions.assertThat;` – Eugen Martynov Feb 27 '15 at 22:13
1

The accepted answer didn't work for me. However, adding the following did work for me:

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

and:

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

Based on https://stackoverflow.com/a/29947562/2832027

Community
  • 1
  • 1
TTransmit
  • 3,270
  • 2
  • 28
  • 43
  • The question and answer is already outdated as for me. I don't have any issues in having assertj in the project now. As well AssetJ for Android already went two version up – Eugen Martynov Sep 04 '15 at 06:08
  • The issue still exists as far as the current version of AssertJ (1.1.0) does not use the latest version of support-annotations (23.0.1). The latest versions of Espresso and com.android.support.test:rules also use old versions of support-annotations. I found your question came up when I searched for the error. – TTransmit Sep 04 '15 at 07:57
-2

You need to change:

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

to:

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

Also ensure that your test folder is called test and not androidTest

chuckliddell0
  • 2,061
  • 1
  • 19
  • 25