-
Notifications
You must be signed in to change notification settings - Fork 55
Closed
Labels
Description
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"