Java JUnit 5 test yields "Can't determine test data path for strategy 'COMMUNITY'"

Hi folks,

I’m working on a plugin targeting IntelliJ Ultimate (I’ll detail the plugin config below), and I’m trying to run test classes that extend com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase5#LightJavaCodeInsightFixtureTestCase5(com.intellij.testFramework.LightProjectDescriptor).

However, they result in the following exception, and I can’t seem to find what kind of misconfiguration I might have:

15:45:28,036 SEVERE                 #TestFramework - Test failed 
java.lang.IllegalStateException: Can't determine test data path for strategy 'COMMUNITY' relative to home 'C:\...\.gradle\caches\8.12.1\transforms\9aab8a772b4c8775f29762e0d561a088\transformed\ideaIU-2025.1-win'. Configured mappings: [<COMMUNITY_FROM_ULTIMATE,community\java\java-tests\testData>, <COMMUNITY,java\java-tests\testData>, <ULTIMATE,testData>] 
	at com.intellij.openapi.application.ex.PathManagerEx.getTestDataPath(PathManagerEx.java:206) 
	at com.intellij.openapi.application.ex.PathManagerEx.getTestDataPath(PathManagerEx.java:114) 
	at com.intellij.JavaTestUtil.getJavaTestDataPath(JavaTestUtil.java:21) 
	at com.intellij.JavaTestUtil.getRelativeJavaTestDataPath(JavaTestUtil.java:25) 
	at com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase5.getRelativePath(LightJavaCodeInsightFixtureTestCase5.kt:17) 
	at com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase5$testCase$1.getBasePath(LightJavaCodeInsightFixtureTestCase5.kt:34) 
	at com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase.getTestDataPath(LightJavaCodeInsightFixtureTestCase.java:172) 
	at com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase5$testCase$1.getTestDataPath(LightJavaCodeInsightFixtureTestCase5.kt:32) 
	at com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase.setUp(LightJavaCodeInsightFixtureTestCase.java:125) 
	at com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase5$testCase$1.beforeEach(LightJavaCodeInsightFixtureTestCase5.kt:37) 
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:165) 
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:201) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:201) 
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:164) 
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) 
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) 
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) 
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) 
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) 
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) 
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) 
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) 
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) 
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) 
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) 
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) 
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) 
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) 
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:201) 
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:170) 
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:94) 
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:59) 
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:142) 
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:58) 
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103) 
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85) 
	at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47) 
	at org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$1(InterceptingLauncher.java:39) 
	at org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25) 
	at org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:38) 
	at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47) 
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:124) 
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:99) 
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:94) 
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63) 
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) 
	at java.base/java.lang.reflect.Method.invoke(Method.java:580) 
	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.stop(Unknown Source) 
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:200) 
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132) 
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) 
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) 
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) 
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:121) 
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) 
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) 
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) 

I only include the probably relevant plugin configurations below:

build.gradle.kts

plugins {
  id("org.jetbrains.intellij.platform") version "2.3.0"
}

dependencies {
  intellijPlatform {
    //I tried this with useInstaller being enabled too
    intellijIdeaUltimate("2025.1", useInstaller = false)

    testFramework(TestFrameworkType.Platform)
    testFramework(TestFrameworkType.JUnit5)
    testFramework(TestFrameworkType.Plugin.Java)

    testImplementation("junit:junit:4.13.2")
    testImplementation("org.junit.jupiter:junit-jupiter:5.12.0")
    testImplementation("org.junit.vintage:junit-vintage-engine:5.12.0")
    //Added because the project also has tests extending BasePlatformTestCase
    testImplementation("org.junit.platform:junit-platform-launcher:1.12.2")
}

tasks {
  test {
    useJUnitPlatform()
  }
}

I would appreciate any help or hint what may be the problem.
Thank you!

So, it turns out that the LightJavaCodeInsightFixtureTestCase5.getTestDataPath() function had to be overridden in the actual test class. I somehow overlooked that.