Skip to content

Upgrading to JUnit 5.13

Marc Philipp edited this page May 26, 2025 · 6 revisions

GraalVM Native Build Tools

If you're using GraalVM's Native Build Tools in a version prior to 0.11.0, you will need to adjust your build to include the following classes with --initialize-at-build-time:

Important

The steps below are not necessary if you're using Native Build Tools in version 0.11.0 or later.

  • org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences
  • org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo
  • org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$LifecycleMethods
  • org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor
  • org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor
  • org.junit.jupiter.engine.descriptor.DynamicDescendantFilter$Mode
  • org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector$1
  • org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo
  • org.junit.jupiter.engine.discovery.ClassSelectorResolver$DummyClassTemplateInvocationContext
  • org.junit.platform.engine.support.store.NamespacedHierarchicalStore$EvaluatedValue
  • org.junit.platform.launcher.core.DiscoveryIssueNotifier
  • org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider
  • org.junit.platform.launcher.core.LauncherDiscoveryResult$EngineResultInfo
  • org.junit.platform.suite.engine.SuiteTestDescriptor$LifecycleMethods

Gradle

plugins {
	id("org.graalvm.buildtools.native") version "0.10.6"
}

val initializeAtBuildTime = listOf(
	"org.junit.jupiter.api.DisplayNameGenerator\$IndicativeSentences",
	"org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor\$ClassInfo",
	"org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor\$LifecycleMethods",
	"org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor",
	"org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor",
	"org.junit.jupiter.engine.descriptor.DynamicDescendantFilter\$Mode",
	"org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector\$1",
	"org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor\$MethodInfo",
	"org.junit.jupiter.engine.discovery.ClassSelectorResolver\$DummyClassTemplateInvocationContext",
	"org.junit.platform.engine.support.store.NamespacedHierarchicalStore\$EvaluatedValue",
	"org.junit.platform.launcher.core.DiscoveryIssueNotifier",
	"org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider",
	"org.junit.platform.launcher.core.LauncherDiscoveryResult\$EngineResultInfo",
	"org.junit.platform.suite.engine.SuiteTestDescriptor\$LifecycleMethods",
)

graalvmNative {
	binaries {
		named("test") {
			buildArgs.add("--initialize-at-build-time=${initializeAtBuildTime.joinToString(",")}")
		}
	}
}

Maven

<plugin>
  <groupId>org.graalvm.buildtools</groupId>
  <artifactId>native-maven-plugin</artifactId>
  <version>0.10.6</version>
  <extensions>true</extensions>
  <executions>
    <execution>
      <id>test-native</id>
      <goals>
        <goal>test</goal>
      </goals>
      <phase>test</phase>
      <configuration>
        <buildArgs>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$LifecycleMethods</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.DynamicDescendantFilter$Mode</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector$1</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.jupiter.engine.discovery.ClassSelectorResolver$DummyClassTemplateInvocationContext</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.platform.engine.support.store.NamespacedHierarchicalStore$EvaluatedValue</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.platform.launcher.core.DiscoveryIssueNotifier</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.platform.launcher.core.LauncherDiscoveryResult$EngineResultInfo</buildArg>
          <buildArg>--initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor$LifecycleMethods</buildArg>
        </buildArgs>
      </configuration>
    </execution>
  </executions>
</plugin>
Clone this wiki locally