3

After update my Android project to API 28 my androidTest project stopped working. There was a compilation error because android.test.ApplicationTestCase doesn't exist.

ApplicationTest.java look like this:

import android.app.Application;
import android.test.ApplicationTestCase;

public class ApplicationTest extends ApplicationTestCase<Application> {
    public ApplicationTest() {
        super(Application.class);
    }
}

Suggestion from another thread was to add a line to gradle file:

androidTestImplementation 'com.google.android:android-test:4.1.1.4'

After this Android Studio found android.test.ApplicationTestCase class. But durring rebuild I've got another error:

Cause 1: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class org.xmlpull.v1.XmlPullParser found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.4c.jar (xpp3:xpp3:1.1.4c)
Duplicate class org.xmlpull.v1.XmlPullParserException found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.4c.jar (xpp3:xpp3:1.1.4c)
Duplicate class org.xmlpull.v1.XmlPullParserFactory found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.4c.jar (xpp3:xpp3:1.1.4c)
Duplicate class org.xmlpull.v1.XmlSerializer found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.4c.jar (xpp3:xpp3:1.1.4c)

My build.gradle file:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28

    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 9
        versionName "2.5"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'com.android.support:design:28.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.opencsv:opencsv:4.5'
    testImplementation 'junit:junit:4.12'
    testImplementation 'com.google.guava:guava:24.1-jre'
    androidTestImplementation 'com.google.android:android-test:4.1.1.4'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support:support-annotations:28.0.0'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation("com.android.support.test.espresso:espresso-contrib:2.2.2") {
        exclude module: 'recyclerview-v7'
        exclude module: 'design'
        exclude module: 'support-v4'
    }
}
Dharman
  • 30,962
  • 25
  • 85
  • 135
maniek099
  • 319
  • 4
  • 19

1 Answers1

0

You need to exclude the xpp3 dependency group from the com.google.android:android-test dependency.

// app/build.gradle
androidTestImplementation('com.google.android:android-test:4.1.1.4') {
    exclude group: 'xpp3', module: 'xpp3'
}

The reason is that it is already specified in the classpath for the debugAndroidTest build variant. Thanks to OneWorld's answer about checking the dependency graph.

Ari Lacenski
  • 631
  • 12
  • 18