Closed
Description
What happened?
In IntelliJ Platform Gradle Plugin 2.0, when using TestFramework.JUnit5
, it fails with NoClassDefFoundError
.
Related issue: IJPL-159134
This needs to be fixed directly in the Test Framework JUnit5 library.
Until then, as a workaround, add JUnit4 to test dependencies:
dependencies {
// ...
testRuntimeOnly("junit:junit:4.13.2")
}
Relevant log output or stack trace
java.lang.NoClassDefFoundError: junit/framework/TestCase
or
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not start Gradle Test Executor 1.
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.startProcessing(SuiteTestClassProcessor.java:45)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92)
at jdk.proxy1/jdk.proxy1.$Proxy4.startProcessing(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$1.run(TestWorker.java:166)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:130)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:101)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:61)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.lang.NoClassDefFoundError: org/junit/rules/TestRule
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373)
at java.base/java.lang.Class.getConstructor0(Class.java:3578)
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2754)
at com.intellij.openapi.diagnostic.Logger.setFactory(Logger.java:72)
at com.intellij.testFramework.common.TestEnvironmentKt.initializeTestEnvironment(testEnvironment.kt:30)
at com.intellij.testFramework.junit5.impl.JUnit5TestEnvironmentInitializer.launcherSessionOpened(JUnit5TestEnvironmentInitializer.kt:13)
at org.junit.platform.launcher.core.DefaultLauncherSession.<init>(DefaultLauncherSession.java:33)
at org.junit.platform.launcher.core.LauncherFactory.openSession(LauncherFactory.java:98)
at org.junit.platform.launcher.core.LauncherFactory.openSession(LauncherFactory.java:82)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$BackwardsCompatibleLauncherSession.open(JUnitPlatformTestClassProcessor.java:323)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.createTestExecutor(JUnitPlatformTestClassProcessor.java:86)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.startProcessing(AbstractJUnitTestClassProcessor.java:44)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.startProcessing(SuiteTestClassProcessor.java:43)
... 18 more
Caused by: java.lang.ClassNotFoundException: org.junit.rules.TestRule
at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:224)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
Steps to reproduce
repositories {
mavenCentral()
intellijPlatform {
defaultRepositories()
}
}
dependencies {
testImplementation(platform("org.junit:junit-bom:5.10.3"))
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
intellijPlatform {
intellijIdeaCommunity("2023.2.7")
testFramework(TestFrameworkType.JUnit5)
}
}
tasks {
test {
useJUnitPlatform()
}
}
intellijPlatform {
instrumentCode = false
}
Gradle IntelliJ Plugin version
2.0.0
Gradle version
8.9
Operating System
None
Link to build, i.e. failing GitHub Action job
No response