Eclipse JUnit-Runner inkompatibel mit JUnit Platform 1.x #71
Labels
No labels
bug
build
enhancement
headless
P1-critical
P2-high
P3-medium
P4-low
refactoring
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ai-tools/jdt-mcp-server#71
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
jdt_run_testsundjdt_start_tests_asyncscheitern mit:Die Klasse
OutputDirectoryCreatorexistiert erst in JUnit Platform 6.x. Projekte mit JUnit 5.11.4 (Platform 1.11.4) sind betroffen.Reproduktion
jdt_run_tests(projectName="fixture-core", className="SimpleProcessorTest")ausführenNoClassDefFoundErrorWorkaround
jdt_maven_buildmitgoals="test"funktioniert.Mögliche Fixes
Kontext
Gefunden im Test-Report v0.2.18 (Tests J4, J5).
Triage 2026-09-07: Ursache verifiziert, #78 hierher zusammengelegt
#78 (
NoSuchMethodError: CollectionUtils.forEachInReverseOrder) ist dasselbe Problem mit umgekehrtem Vorzeichen: Dort ist die Projekt-Platform neuer als erwartet, hier älter. Beide Symptome haben eine Ursache:ExecutionToolssetztTEST_KINDfest auforg.eclipse.jdt.junit.loader.junit5(ExecutionTools.java:822und:1488). JDT prüft inCoreTestSearchEngine.hasJUnitJupiterTestAnnotationdie Platform-Version aus dem Jar-Namenjunit-platform-commons-<v>.jar(Fallback: ManifestSpecification-Version) und erwartet:org.eclipse.jdt.junit.loader.junit5org.eclipse.jdt.junit.loader.junit6(in Eclipse 2025-12 vorhanden)Fix: Vor dem Launch die Platform-Version aus dem Projekt-Classpath lesen und den passenden Loader-Kind wählen. Verifiziert am 2026-09-07 gegen arknet (JUnit 6.1.1, Java 25).
Hochgestuft auf P2:
jdt_run_testsist damit für jedes Projekt außerhalb des exakt passenden Platform-Majors unbenutzbar, Workaround bleibtjdt_maven_build(goals="test").Ergänzung: Parallel ist #85 entstanden, das denselben Mechanismus vom Precheck her beschreibt (Platform 6.x scheitert schon an
hasJUnitJupiterTestAnnotation, bevor der Loader überhaupt startet). Arbeitsteilung:junit5für 1.x,junit6für 6.x,junit4als Fallback).org.eclipse.jdt.junit5.runtimein Eclipse 2025-12 mit Platform 1.11 überhaupt noch lauffähig ist (OutputDirectoryCreatorfehlt dort). Falls nicht, braucht 1.x-Projekte einen eigenen Weg.Entscheidung: geschlossen, JUnit 6 empfohlen.
PR #93 erkennt den Test-Kind jetzt am Classpath (junit4/junit5/junit6). Gegen JUnit Platform 1.11 (fixture-core, JUnit 5.11.4) wirft das gebündelte
org.eclipse.jdt.junit5.runtime1.2.0NoClassDefFoundError: org/junit/platform/engine/OutputDirectoryCreator— eine Inkompatibilität des Eclipse-Bundles, kein Erkennungsfehler. Ein eigener Runner lohnt für diesen Fall nicht;jdt_run_testsliefert seit #93 eine klare Fehlermeldung, die Einschränkung steht in der README unter „Bekannte Einschränkungen". Projekte auf JUnit Platform 1.x bitte auf JUnit 6 heben.