jdt_run_tests scheitert bei JUnit Platform 6.x — TEST_KIND fest auf junit5-Loader #85

Closed
opened 2026-09-07 16:23:20 +00:00 by hauschel.fred · 1 comment
Collaborator

Symptom

Cannot find 'org.junit.platform.commons.annotation.Testable' on project build path. JUnit 5 tests can only be run if JUnit 5 is on the build path.

obwohl junit-platform-commons-6.1.1.jar im Build Path liegt (Eclipse und Maven lösen dieselbe Version auf, auch nach jdt_maven_update_project).

Ursache

ExecutionTools setzt org.eclipse.jdt.junit.TEST_KIND an zwei Stellen (sync + async) fest auf org.eclipse.jdt.junit.loader.junit5.

JDTs Precheck (CoreTestSearchEngine.hasJUnitJupiterTestAnnotation, aufgerufen aus JUnitLaunchConfigurationDelegate) findet den Typ Testable, liest dann die Version aus dem Jar-Namen junit-platform-commons-<version>.jar (Fallback: Manifest Specification-Version) und verlangt für das junit5-Kind Major 1, für das junit6-Kind Major 6. Mit Platform 6.x schlägt der junit5-Precheck also immer fehl — unabhängig vom Build Path.

Eclipse 2025-12 bringt org.eclipse.jdt.junit.loader.junit6 + org.eclipse.jdt.junit6.runtime mit; beides ist im Produkt bereits gebündelt (plugins/org.eclipse.jdt.junit6.runtime_1.0.0…).

Fix-Vorschlag

Vor dem Launch die Platform-Major-Version aus dem Classpath ermitteln (Jar-Name von junit-platform-commons, Fallback Manifest) und das Kind wählen:

  • 1.xorg.eclipse.jdt.junit.loader.junit5
  • 6.xorg.eclipse.jdt.junit.loader.junit6
  • kein Platform-Jar, aber org.junit.Testorg.eclipse.jdt.junit.loader.junit4

Verwandt

#71, #78 (Loader-Inkompatibilitäten zur Laufzeit — die greifen erst nach diesem Precheck), #46 (test-scope Deps).

Gefunden

Test gegen arknet (JUnit 6.1.1, Java 25) am 2026-09-07, Server 1.0.0.202604101442.

## Symptom ``` Cannot find 'org.junit.platform.commons.annotation.Testable' on project build path. JUnit 5 tests can only be run if JUnit 5 is on the build path. ``` obwohl `junit-platform-commons-6.1.1.jar` im Build Path liegt (Eclipse und Maven lösen dieselbe Version auf, auch nach `jdt_maven_update_project`). ## Ursache `ExecutionTools` setzt `org.eclipse.jdt.junit.TEST_KIND` an zwei Stellen (sync + async) fest auf `org.eclipse.jdt.junit.loader.junit5`. JDTs Precheck (`CoreTestSearchEngine.hasJUnitJupiterTestAnnotation`, aufgerufen aus `JUnitLaunchConfigurationDelegate`) findet den Typ `Testable`, liest dann die Version aus dem Jar-Namen `junit-platform-commons-<version>.jar` (Fallback: Manifest `Specification-Version`) und verlangt für das junit5-Kind Major **1**, für das junit6-Kind Major **6**. Mit Platform 6.x schlägt der junit5-Precheck also immer fehl — unabhängig vom Build Path. Eclipse 2025-12 bringt `org.eclipse.jdt.junit.loader.junit6` + `org.eclipse.jdt.junit6.runtime` mit; beides ist im Produkt bereits gebündelt (`plugins/org.eclipse.jdt.junit6.runtime_1.0.0…`). ## Fix-Vorschlag Vor dem Launch die Platform-Major-Version aus dem Classpath ermitteln (Jar-Name von `junit-platform-commons`, Fallback Manifest) und das Kind wählen: - `1.x` → `org.eclipse.jdt.junit.loader.junit5` - `6.x` → `org.eclipse.jdt.junit.loader.junit6` - kein Platform-Jar, aber `org.junit.Test` → `org.eclipse.jdt.junit.loader.junit4` ## Verwandt #71, #78 (Loader-Inkompatibilitäten zur Laufzeit — die greifen erst nach diesem Precheck), #46 (test-scope Deps). ## Gefunden Test gegen arknet (JUnit 6.1.1, Java 25) am 2026-09-07, Server 1.0.0.202604101442.
Author
Collaborator

Triage 2026-09-07

Dieses Issue ist das Umsetzungs-Issue für die Loader-Kind-Wahl. #78 wurde heute als Duplikat in #71 zusammengelegt; #71 bleibt als Verifikationsfall für Platform 1.x offen (Runtime-NoClassDefFoundError: OutputDirectoryCreator mit dem gebündelten junit5-Runtime), weil nicht sicher ist, dass die Kind-Wahl allein den 1.x-Fall heilt.

Beim Fix bitte gegen beide Fixtures testen: fixture-core (JUnit 5.11 / Platform 1.11) und ein Modul mit JUnit 6.x.

## Triage 2026-09-07 Dieses Issue ist das Umsetzungs-Issue für die Loader-Kind-Wahl. #78 wurde heute als Duplikat in #71 zusammengelegt; #71 bleibt als Verifikationsfall für Platform 1.x offen (Runtime-`NoClassDefFoundError: OutputDirectoryCreator` mit dem gebündelten junit5-Runtime), weil nicht sicher ist, dass die Kind-Wahl allein den 1.x-Fall heilt. Beim Fix bitte gegen beide Fixtures testen: `fixture-core` (JUnit 5.11 / Platform 1.11) und ein Modul mit JUnit 6.x.
fred closed this issue 2026-09-07 19:07:40 +00:00
Commenting is not possible because the repository is archived.
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-tools/jdt-mcp-server#85
No description provided.