diff --git a/benchmark-overhead/build.gradle.kts b/benchmark-overhead/build.gradle.kts index 153f4a5b6a5c..5084c0959804 100644 --- a/benchmark-overhead/build.gradle.kts +++ b/benchmark-overhead/build.gradle.kts @@ -16,7 +16,7 @@ repositories { } dependencies { - implementation(enforcedPlatform("org.junit:junit-bom:5.12.2")) + implementation(enforcedPlatform("org.junit:junit-bom:5.13.0")) testImplementation("org.testcontainers:testcontainers:1.21.1") testImplementation("org.testcontainers:postgresql:1.21.1") diff --git a/conventions/build.gradle.kts b/conventions/build.gradle.kts index 5e608633cc4f..39e8aae6837f 100644 --- a/conventions/build.gradle.kts +++ b/conventions/build.gradle.kts @@ -71,7 +71,7 @@ dependencies { implementation("net.ltgt.gradle:gradle-nullaway-plugin:2.2.0") implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.6") - testImplementation(enforcedPlatform("org.junit:junit-bom:5.12.2")) + testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.0")) testImplementation("org.junit.jupiter:junit-jupiter-api") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") testImplementation("org.assertj:assertj-core:3.27.3") diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index f2b6dd9350b3..6ed3c2da511c 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -81,7 +81,7 @@ val CORE_DEPENDENCIES = listOf( // There are dependencies included here that appear to have no usages, but are maintained at // this top level to help consistently satisfy large numbers of transitive dependencies. val DEPENDENCIES = listOf( - "org.junit.jupiter:junit-jupiter-api:5.12.2", + "org.junit.jupiter:junit-jupiter-api:5.13.0", "org.spockframework:spock-core:2.4-M6-groovy-4.0", "org.spockframework:spock-junit4:2.4-M6-groovy-4.0", diff --git a/examples/distro/build.gradle b/examples/distro/build.gradle index b09efd1f8c56..35dcb9ebf8ea 100644 --- a/examples/distro/build.gradle +++ b/examples/distro/build.gradle @@ -69,7 +69,7 @@ subprojects { testImplementation("org.mockito:mockito-core:5.18.0") - testImplementation(enforcedPlatform("org.junit:junit-bom:5.12.2")) + testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.0")) testImplementation("org.junit.jupiter:junit-jupiter-api") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") testRuntimeOnly("org.junit.platform:junit-platform-launcher") diff --git a/examples/extension/build.gradle b/examples/extension/build.gradle index b6eaf99faae3..06571d17bb98 100644 --- a/examples/extension/build.gradle +++ b/examples/extension/build.gradle @@ -104,7 +104,7 @@ dependencies { testImplementation("io.opentelemetry:opentelemetry-api") testImplementation("io.opentelemetry.proto:opentelemetry-proto:1.7.0-alpha") - testImplementation(enforcedPlatform("org.junit:junit-bom:5.12.2")) + testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.0")) testImplementation("org.junit.jupiter:junit-jupiter-api") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") testRuntimeOnly("org.junit.platform:junit-platform-launcher") diff --git a/gradle-plugins/build.gradle.kts b/gradle-plugins/build.gradle.kts index d25fd396a6c6..b1dd94056de2 100644 --- a/gradle-plugins/build.gradle.kts +++ b/gradle-plugins/build.gradle.kts @@ -44,7 +44,7 @@ dependencies { testImplementation("org.assertj:assertj-core:3.27.3") - testImplementation(enforcedPlatform("org.junit:junit-bom:5.12.2")) + testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.0")) testImplementation("org.junit.jupiter:junit-jupiter-api") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") testRuntimeOnly("org.junit.platform:junit-platform-launcher") diff --git a/instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/semconv/http/ValidRequestMethodsProvider.java b/instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/semconv/http/ValidRequestMethodsProvider.java index f7b5a56775fb..4d7ed62363c6 100644 --- a/instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/semconv/http/ValidRequestMethodsProvider.java +++ b/instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/semconv/http/ValidRequestMethodsProvider.java @@ -10,11 +10,13 @@ import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.support.ParameterDeclarations; final class ValidRequestMethodsProvider implements ArgumentsProvider { @Override - public Stream provideArguments(ExtensionContext context) { + public Stream provideArguments( + ParameterDeclarations parameters, ExtensionContext context) { return HttpConstants.KNOWN_METHODS.stream().map(Arguments::of); } } diff --git a/instrumentation-docs/build.gradle.kts b/instrumentation-docs/build.gradle.kts index b733a3ce8d8a..dff191461527 100644 --- a/instrumentation-docs/build.gradle.kts +++ b/instrumentation-docs/build.gradle.kts @@ -12,7 +12,7 @@ dependencies { implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.19.0") implementation("io.opentelemetry:opentelemetry-sdk-common") - testImplementation(enforcedPlatform("org.junit:junit-bom:5.12.2")) + testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.0")) testImplementation("org.assertj:assertj-core:3.27.3") testImplementation("org.junit.jupiter:junit-jupiter-api") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") diff --git a/instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationTest.kt b/instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationTest.kt index f95bba068488..0509c243ca11 100644 --- a/instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationTest.kt +++ b/instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationTest.kt @@ -46,13 +46,11 @@ import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.Assumptions import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance -import org.junit.jupiter.api.extension.ExtensionContext import org.junit.jupiter.api.extension.RegisterExtension import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.Arguments.arguments -import org.junit.jupiter.params.provider.ArgumentsProvider -import org.junit.jupiter.params.provider.ArgumentsSource +import org.junit.jupiter.params.provider.MethodSource import java.util.concurrent.Executors import java.util.concurrent.TimeUnit import java.util.function.Consumer @@ -83,7 +81,7 @@ class KotlinCoroutinesInstrumentationTest { val tracer = testing.openTelemetry.getTracer("test") @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `cancellation prevents trace`(dispatcher: DispatcherWrapper) { runCatching { runTest(dispatcher) { @@ -116,7 +114,7 @@ class KotlinCoroutinesInstrumentationTest { } @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `propagates across nested jobs`(dispatcher: DispatcherWrapper) { runTest(dispatcher) { val goodDeferred = async { 1 } @@ -310,7 +308,7 @@ class KotlinCoroutinesInstrumentationTest { } @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `traced mono`(dispatcherWrapper: DispatcherWrapper) { runTest(dispatcherWrapper) { mono(dispatcherWrapper.dispatcher) { @@ -337,7 +335,7 @@ class KotlinCoroutinesInstrumentationTest { private val animalKey: ContextKey = ContextKey.named("animal") @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `context contains expected value`(dispatcher: DispatcherWrapper) { runTest(dispatcher) { val context1 = Context.current().with(animalKey, "cat") @@ -512,18 +510,16 @@ class KotlinCoroutinesInstrumentationTest { span.end() } - class DispatchersSource : ArgumentsProvider { - override fun provideArguments(context: ExtensionContext?): Stream = Stream.of( - // Wrap dispatchers since it seems that ParameterizedTest tries to automatically close - // Closeable arguments with no way to avoid it. - arguments(DispatcherWrapper(Dispatchers.Default)), - arguments(DispatcherWrapper(Dispatchers.IO)), - arguments(DispatcherWrapper(Dispatchers.Unconfined)), - arguments(DispatcherWrapper(threadPool.asCoroutineDispatcher())), - arguments(DispatcherWrapper(singleThread.asCoroutineDispatcher())), - arguments(DispatcherWrapper(vertx.dispatcher())) - ) - } + private fun dispatchersSourceArguments(): Stream = Stream.of( + // Wrap dispatchers since it seems that ParameterizedTest tries to automatically close + // Closeable arguments with no way to avoid it. + arguments(DispatcherWrapper(Dispatchers.Default)), + arguments(DispatcherWrapper(Dispatchers.IO)), + arguments(DispatcherWrapper(Dispatchers.Unconfined)), + arguments(DispatcherWrapper(threadPool.asCoroutineDispatcher())), + arguments(DispatcherWrapper(singleThread.asCoroutineDispatcher())), + arguments(DispatcherWrapper(vertx.dispatcher())) + ) class DispatcherWrapper(val dispatcher: CoroutineDispatcher) { override fun toString(): String = dispatcher.toString() @@ -566,7 +562,7 @@ class KotlinCoroutinesInstrumentationTest { // regression test for // https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/11411 @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `dispatch does not propagate context`(dispatcher: DispatcherWrapper) { Assumptions.assumeTrue(dispatcher.dispatcher != Dispatchers.Unconfined) diff --git a/instrumentation/kotlinx-coroutines/kotlinx-coroutines-flow-1.3/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutines13InstrumentationTest.kt b/instrumentation/kotlinx-coroutines/kotlinx-coroutines-flow-1.3/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutines13InstrumentationTest.kt index 62902124a599..11acbd446894 100644 --- a/instrumentation/kotlinx-coroutines/kotlinx-coroutines-flow-1.3/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutines13InstrumentationTest.kt +++ b/instrumentation/kotlinx-coroutines/kotlinx-coroutines-flow-1.3/javaagent/src/test/kotlin/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutines13InstrumentationTest.kt @@ -27,13 +27,11 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.TestInstance -import org.junit.jupiter.api.extension.ExtensionContext import org.junit.jupiter.api.extension.RegisterExtension import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.Arguments.arguments -import org.junit.jupiter.params.provider.ArgumentsProvider -import org.junit.jupiter.params.provider.ArgumentsSource +import org.junit.jupiter.params.provider.MethodSource import java.util.concurrent.Executors import java.util.stream.Stream @@ -58,7 +56,7 @@ class KotlinCoroutines13InstrumentationTest { val tracer = testing.openTelemetry.getTracer("test") @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `traced across channels`(dispatcher: DispatcherWrapper) { runTest(dispatcher) { val producer = produce { @@ -110,7 +108,7 @@ class KotlinCoroutines13InstrumentationTest { } @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `traced mono with context propagation operator`(dispatcherWrapper: DispatcherWrapper) { runTest(dispatcherWrapper) { val currentContext = Context.current() @@ -145,7 +143,7 @@ class KotlinCoroutines13InstrumentationTest { } @ParameterizedTest - @ArgumentsSource(DispatchersSource::class) + @MethodSource("dispatchersSourceArguments") fun `traced flux`(dispatcherWrapper: DispatcherWrapper) { runTest(dispatcherWrapper) { flux(dispatcherWrapper.dispatcher) { @@ -198,17 +196,15 @@ class KotlinCoroutines13InstrumentationTest { } } - class DispatchersSource : ArgumentsProvider { - override fun provideArguments(context: ExtensionContext?): Stream = Stream.of( - // Wrap dispatchers since it seems that ParameterizedTest tries to automatically close - // Closeable arguments with no way to avoid it. - arguments(DispatcherWrapper(Dispatchers.Default)), - arguments(DispatcherWrapper(Dispatchers.IO)), - arguments(DispatcherWrapper(Dispatchers.Unconfined)), - arguments(DispatcherWrapper(threadPool.asCoroutineDispatcher())), - arguments(DispatcherWrapper(singleThread.asCoroutineDispatcher())), - ) - } + private fun dispatchersSourceArguments(): Stream = Stream.of( + // Wrap dispatchers since it seems that ParameterizedTest tries to automatically close + // Closeable arguments with no way to avoid it. + arguments(DispatcherWrapper(Dispatchers.Default)), + arguments(DispatcherWrapper(Dispatchers.IO)), + arguments(DispatcherWrapper(Dispatchers.Unconfined)), + arguments(DispatcherWrapper(threadPool.asCoroutineDispatcher())), + arguments(DispatcherWrapper(singleThread.asCoroutineDispatcher())), + ) class DispatcherWrapper(val dispatcher: CoroutineDispatcher) { override fun toString(): String = dispatcher.toString() diff --git a/instrumentation/logback/logback-appender-1.0/library/build.gradle.kts b/instrumentation/logback/logback-appender-1.0/library/build.gradle.kts index edf118bbb314..52ab7aa8b6df 100644 --- a/instrumentation/logback/logback-appender-1.0/library/build.gradle.kts +++ b/instrumentation/logback/logback-appender-1.0/library/build.gradle.kts @@ -47,6 +47,26 @@ graalvmNative { binaries.all { resources.autodetect() + + // see https://github.com/junit-team/junit5/wiki/Upgrading-to-JUnit-5.13 + // should not be needed after updating native build tools to 0.11.0 + 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", + ) + buildArgs.add("--initialize-at-build-time=${initializeAtBuildTime.joinToString(",")}") } // See https://github.com/graalvm/native-build-tools/issues/572 diff --git a/javaagent-tooling/build.gradle.kts b/javaagent-tooling/build.gradle.kts index e179c9de3e49..059bae7e583d 100644 --- a/javaagent-tooling/build.gradle.kts +++ b/javaagent-tooling/build.gradle.kts @@ -87,6 +87,18 @@ testing { // Used by byte-buddy but not brought in as a transitive dependency. compileOnly("com.google.code.findbugs:annotations") } + targets { + all { + testTask.configure { + filter { + // Helper class used in test that refers to a class that is missing from the test + // classpath. We need to exclude it to avoid junit failing while it is searching for + // test classes. + excludeTestsMatching("MissingTypeTest\$SomeClass") + } + } + } + } } val testPatchBytecodeVersion by registering(JvmTestSuite::class) { diff --git a/smoke-tests-otel-starter/spring-boot-3.2/build.gradle.kts b/smoke-tests-otel-starter/spring-boot-3.2/build.gradle.kts index 0f1ccf155b0a..ea5c0e71c9bc 100644 --- a/smoke-tests-otel-starter/spring-boot-3.2/build.gradle.kts +++ b/smoke-tests-otel-starter/spring-boot-3.2/build.gradle.kts @@ -75,4 +75,28 @@ graalvmNative { useJUnitPlatform() setForkEvery(1) } + + // see https://github.com/junit-team/junit5/wiki/Upgrading-to-JUnit-5.13 + // should not be needed after updating native build tools to 0.11.0 + 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", + ) + binaries { + named("test") { + buildArgs.add("--initialize-at-build-time=${initializeAtBuildTime.joinToString(",")}") + } + } } diff --git a/smoke-tests-otel-starter/spring-boot-3/build.gradle.kts b/smoke-tests-otel-starter/spring-boot-3/build.gradle.kts index 1b7b865e7b7d..9671dc8bcc43 100644 --- a/smoke-tests-otel-starter/spring-boot-3/build.gradle.kts +++ b/smoke-tests-otel-starter/spring-boot-3/build.gradle.kts @@ -78,4 +78,28 @@ graalvmNative { useJUnitPlatform() setForkEvery(1) } + + // see https://github.com/junit-team/junit5/wiki/Upgrading-to-JUnit-5.13 + // should not be needed after updating native build tools to 0.11.0 + 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", + ) + binaries { + named("test") { + buildArgs.add("--initialize-at-build-time=${initializeAtBuildTime.joinToString(",")}") + } + } } diff --git a/smoke-tests-otel-starter/spring-boot-reactive-3/build.gradle.kts b/smoke-tests-otel-starter/spring-boot-reactive-3/build.gradle.kts index 64049fbe61fb..71e0daffc54b 100644 --- a/smoke-tests-otel-starter/spring-boot-reactive-3/build.gradle.kts +++ b/smoke-tests-otel-starter/spring-boot-reactive-3/build.gradle.kts @@ -69,4 +69,28 @@ graalvmNative { useJUnitPlatform() setForkEvery(1) } + + // see https://github.com/junit-team/junit5/wiki/Upgrading-to-JUnit-5.13 + // should not be needed after updating native build tools to 0.11.0 + 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", + ) + binaries { + named("test") { + buildArgs.add("--initialize-at-build-time=${initializeAtBuildTime.joinToString(",")}") + } + } }