Skip to content

Missing dependencies for instrumentation tests in wiki #161

@zawadz88

Description

@zawadz88

Hi,
First of all thanks for this great library!
I've integrated today with the newly released instrumentation library, but I've encountered some caveats.

The documentation at https://github.com/mannodermaus/android-junit5/wiki/Instrumentation-Tests-Setup states that I should add:

  androidTestImplementation "androidx.test:runner:1.1.1"
  androidTestImplementation "org.junit.jupiter:junit-jupiter-api:5.4.1"
  androidTestImplementation "de.mannodermaus.junit5:android-test-core:1.0.0"
  androidTestRuntimeOnly "de.mannodermaus.junit5:android-test-runner:1.0.0"

This setup was not enough though as when I tried running the tests I would get:

2019-04-08 18:00:13.480 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl: Rejecting re-init on previously-failed class java.lang.Class<de.mannodermaus.junit5.AndroidJUnit5>: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/junit/platform/runner/JUnitPlatform;
2019-04-08 18:00:13.480 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class java.lang.Class.classForName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:-2)
2019-04-08 18:00:13.480 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:453)
2019-04-08 18:00:13.480 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at void androidx.test.internal.runner.TestLoader.doCreateRunner(java.lang.String, boolean) (TestLoader.java:72)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.util.List androidx.test.internal.runner.TestLoader.getRunnersFor(java.util.Collection, boolean) (TestLoader.java:104)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at org.junit.runner.Request androidx.test.internal.runner.TestRequestBuilder.build() (TestRequestBuilder.java:789)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at org.junit.runner.Request androidx.test.runner.AndroidJUnitRunner.buildRequest(androidx.test.internal.runner.RunnerArgs, android.os.Bundle) (AndroidJUnitRunner.java:543)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at void androidx.test.runner.AndroidJUnitRunner.onStart() (AndroidJUnitRunner.java:386)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at void android.app.Instrumentation$InstrumentationThread.run() (Instrumentation.java:2145)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl: Caused by: java.lang.ClassNotFoundException: Didn't find class "org.junit.platform.runner.JUnitPlatform" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/android.test.mock.jar", zip file "/data/app/com.github.zawadz88.exoplayeraudiosample.test-0hIYP8LGyEu354TyejnNYw==/base.apk", zip file "/data/app/com.github.zawadz88.exoplayeraudiosample-C7K3qz2G030YCu70ejrjAA==/base.apk"],nativeLibraryDirectories=[/data/app/com.github.zawadz88.exoplayeraudiosample.test-0hIYP8LGyEu354TyejnNYw==/lib/x86, /data/app/com.github.zawadz88.exoplayeraudiosample-C7K3qz2G030YCu70ejrjAA==/lib/x86, /system/lib]]
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class java.lang.Class.classForName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:-2)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.lang.Class java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:453)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at void androidx.test.internal.runner.TestLoader.doCreateRunner(java.lang.String, boolean) (TestLoader.java:72)
2019-04-08 18:00:13.481 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at java.util.List androidx.test.internal.runner.TestLoader.getRunnersFor(java.util.Collection, boolean) (TestLoader.java:104)
2019-04-08 18:00:13.482 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at org.junit.runner.Request androidx.test.internal.runner.TestRequestBuilder.build() (TestRequestBuilder.java:789)
2019-04-08 18:00:13.482 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at org.junit.runner.Request androidx.test.runner.AndroidJUnitRunner.buildRequest(androidx.test.internal.runner.RunnerArgs, android.os.Bundle) (AndroidJUnitRunner.java:543)
2019-04-08 18:00:13.482 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at void androidx.test.runner.AndroidJUnitRunner.onStart() (AndroidJUnitRunner.java:386)
2019-04-08 18:00:13.482 16360-16377/com.github.zawadz88.exoplayeraudiosample I/ayeraudiosampl:     at void android.app.Instrumentation$InstrumentationThread.run() (Instrumentation.java:2145)
2019-04-08 18:00:13.482 16360-16377/com.github.zawadz88.exoplayeraudiosample E/TestLoader: Could not find class: de.mannodermaus.junit5.AndroidJUnit5
2019-04-08 18:00:13.617 1975-3486/? I/GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c55e77c)
2019-04-08 18:00:13.619 1975-1991/? I/GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@c55e77c)
2019-04-08 18:00:13.693 16360-16377/com.github.zawadz88.exoplayeraudiosample D/TestExecutor: Adding listener androidx.test.internal.runner.listener.LogRunListener
2019-04-08 18:00:13.694 16360-16377/com.github.zawadz88.exoplayeraudiosample D/TestExecutor: Adding listener androidx.test.internal.runner.listener.InstrumentationResultPrinter
2019-04-08 18:00:13.694 16360-16377/com.github.zawadz88.exoplayeraudiosample D/TestExecutor: Adding listener androidx.test.internal.runner.listener.ActivityFinisherRunListener
2019-04-08 18:00:13.697 16360-16377/com.github.zawadz88.exoplayeraudiosample I/TestRunner: run started: 1 tests
2019-04-08 18:00:13.698 16360-16377/com.github.zawadz88.exoplayeraudiosample I/TestRunner: run finished: 0 tests, 0 failed, 0 ignored

I've inspected the dependencies this library uses and was able to figure the missing dependencies. The following combination works for me:

    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation "org.junit.jupiter:junit-jupiter-api:5.4.1"
    androidTestImplementation "de.mannodermaus.junit5:android-test-core:1.0.0"
    androidTestRuntimeOnly "de.mannodermaus.junit5:android-test-runner:1.0.0"
    androidTestRuntimeOnly "org.junit.platform:junit-platform-runner:1.4.1"
    androidTestRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.4.1"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions