Skip to content

JUnit5 5.4.0 broke Android support #1800

@matejdro

Description

@matejdro

JUnit 5.4.0 started crashing on Android due to unsupported UNICODE_CHARACTER_CLASS flag in Pattern.

Steps to reproduce

  1. Create brand new emulator from Android Studio with Android 9.0 (Google Play) x86_64 image
  2. checkout https://github.com/mannodermaus/android-junit5/tree/7b9f490d9ba6e7eb6b91b99e6d2755c546354e4f
  3. Start emulator
  4. Run ./gradlew :sample:connectedExperimentalDebugAndroidTest from the root of checked out repo
  5. 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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions