-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Closed
Description
JUnit 5.4.0 started crashing on Android due to unsupported UNICODE_CHARACTER_CLASS flag in Pattern.
Steps to reproduce
- Create brand new emulator from Android Studio with
Android 9.0 (Google Play) x86_64
image - checkout https://github.com/mannodermaus/android-junit5/tree/7b9f490d9ba6e7eb6b91b99e6d2755c546354e4f
- Start emulator
- Run
./gradlew :sample:connectedExperimentalDebugAndroidTest
from the root of checked out repo - Tests will crash with following exception:
java.lang.ExceptionInInitializerError
at org.junit.platform.commons.util.StringUtils.isNotBlank(StringUtils.java:64)
at org.junit.platform.commons.util.Preconditions.notBlank(Preconditions.java:248)
at org.junit.platform.launcher.core.LauncherConfigurationParameters.<init>(LauncherConfigurationParameters.java:44)
at org.junit.platform.launcher.core.LauncherConfigurationParameters.<init>(LauncherConfigurationParameters.java:39)
at org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.build(LauncherDiscoveryRequestBuilder.java:194)
at org.junit.platform.runner.JUnitPlatform.createDiscoveryRequest(JUnitPlatform.java:153)
at org.junit.platform.runner.JUnitPlatform.<init>(JUnitPlatform.java:124)
at org.junit.platform.runner.JUnitPlatform.<init>(JUnitPlatform.java:117)
at de.mannodermaus.junit5.AndroidJUnit5.<init>(Runner.kt:17)
at de.mannodermaus.junit5.RunnerKt.createJUnit5Runner(Runner.kt:22)
at de.mannodermaus.junit5.AndroidJUnit5Builder.runnerForClass(RunnerBuilder.kt:69)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:147)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:73)
at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:789)
at androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:543)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:386)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2145)
Caused by: java.lang.IllegalArgumentException: Unsupported flags: 256
at java.util.regex.Pattern.<init>(Pattern.java:1324)
at java.util.regex.Pattern.compile(Pattern.java:975)
at org.junit.platform.commons.util.StringUtils.<clinit>(StringUtils.java:36)
... 20 more
It looks like UNICODE_CHARACTER_CLASS was added to StringUtils in JUnit 5.4.0. This flag is not supported on Android (not even on the latest devices) and causes crash whenever StringUtils
class is initialized.