Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoClassDefFoundError: junit/framework/TestCase & org/junit/rules/TestRule #1711

Closed
hsz opened this issue Jul 25, 2024 · 2 comments
Closed

NoClassDefFoundError: junit/framework/TestCase & org/junit/rules/TestRule #1711

hsz opened this issue Jul 25, 2024 · 2 comments

Comments

@hsz
Copy link
Member

hsz commented Jul 25, 2024

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

@hsz hsz added this to the 2.x milestone Jul 25, 2024
@hsz
Copy link
Member Author

hsz commented Jul 25, 2024

@hsz hsz closed this as completed Jul 25, 2024
@hsz hsz pinned this issue Jul 25, 2024
@gaborbernat
Copy link

Is there a way to not need to use the workaround?

@hsz hsz removed this from the 2.x milestone Sep 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants