eclipse-jdt / eclipse-jdt/eclipse.jdt.core
[ecj vs javac] Cannot run test from package private base class via JUnit view
- Dominant language
- Java
- Stars
- 237
- Forks
- 195
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 47
Description
To reproduce:
1. Import project from attached project: [TestJUnitLaunch.zip](https://github.com/user-attachments/files/20441267/TestJUnitLaunch.zip)
2. Run test `test.TestSub` as a JUnit test.
3. From the JUnit view, right-click on the `baseTest()` child of `TestSub` and run it.
4. Observe no test is ran, an exception is shown in the `Console` view instead:
```
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:165)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverSafely(EngineDiscoveryOrchestrator.java:132)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:105)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:78)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:99)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:77)
at org.junit.platform.launcher.core.DelegatingLauncher.discover(DelegatingLauncher.java:42)
at org.junit.platform.launcher.core.InterceptingLauncher.lambda$discover$0(InterceptingLauncher.java:33)
at org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25)
at org.junit.platform.launcher.core.InterceptingLauncher.discover(InterceptingLauncher.java:33)
at org.junit.platform.launcher.core.DelegatingLauncher.discover(DelegatingLauncher.java:42)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.discover(SessionPerRequestLauncher.java:56)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.(JUnit5TestReference.java:47)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createUniqueIdTest(JUnit5TestLoader.java:113)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.loadTests(JUnit5TestLoader.java:47)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:504)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:748)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:443)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:211)
Caused by: org.junit.platform.commons.JUnitException: UniqueIdSelector [uniqueId = [engine:junit-jupiter]/[class:test.TestSub]/[method:testBase()]] resolution failed
at org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener.selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:39)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:103)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:83)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:116)
at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:48)
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:152)
... 18 more
Caused by: org.junit.platform.commons.JUnitException: UniqueIdSelector [uniqueId = [engine:junit-jupiter]/[class:test.TestSub]/[method:testBase()]] could not be resolved
at org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener.selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:44)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:98)
... 23 more
```
See screen recording: https://github.com/user-attachments/assets/15869421-45c4-4ade-ab31-dfc43cf8e97c
I can reproduce this with:
```
Eclipse SDK
Version: 2025-06 (4.36)
Build id: I20250525-1800
```
Base class:
```
package test;
import org.junit.jupiter.api.Test;
abstract class TestBase {
@Test
public void testBase() {
}
}
```
Sub class:
```
package test;
import org.junit.jupiter.api.Test;
public class TestSub extends TestBase {
@Test
public void testSub() {
}
}
```
There is no bug if `TestBase` is `public`.
Contributor guide
Assessment
This issue has not been assessed yet.