Skip to content

Commit 4c3c9db

Browse files
authored
fix: fix junit 6 support (#1840)
* fix: fix junit 6 identify * fix: update
1 parent 81c1cb5 commit 4c3c9db

2 files changed

Lines changed: 29 additions & 9 deletions

File tree

java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/util/TestSearchUtils.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ public static List<JavaTestItem> findTestPackagesAndTypes(List<Object> arguments
183183
} else {
184184
// 1. We suppose a class can only use one test framework
185185
// 2. If more accurate kind is available, use it.
186-
if (classItem.getTestKind() == TestKind.JUnit5 && kind == TestKind.JUnit) {
186+
if ((classItem.getTestKind() == TestKind.JUnit5 ||
187+
classItem.getTestKind() == TestKind.JUnit6) && kind == TestKind.JUnit) {
187188
classItem.setTestKind(TestKind.JUnit);
188189
}
189190
}
@@ -386,7 +387,20 @@ private static void findTestItemsInTypeBinding(ITypeBinding typeBinding, JavaTes
386387
final List<JavaTestItem> testMethods = new LinkedList<>();
387388
searchers = searchers.stream().filter(s -> {
388389
try {
389-
return CoreTestSearchEngine.isAccessibleClass(type, s.getJdtTestKind());
390+
if (CoreTestSearchEngine.isAccessibleClass(type, s.getJdtTestKind())) {
391+
return true;
392+
}
393+
// For JUnit 6, Eclipse JDT's isAccessibleClass() only applies the
394+
// relaxed @Nested class rules (non-static, non-public inner classes)
395+
// when testKindId equals JUNIT5_TEST_KIND_ID. For JUNIT6_TEST_KIND_ID,
396+
// it falls into the else branch requiring static + public, which
397+
// incorrectly rejects valid @Nested test classes. Fall back to
398+
// JUnit 5 accessibility check since JUnit 6 shares the same rules.
399+
if (s.getTestKind() == TestKind.JUnit6) {
400+
return CoreTestSearchEngine.isAccessibleClass(type,
401+
TestFrameworkUtils.JUNIT5_TEST_SEARCHER.getJdtTestKind());
402+
}
403+
return false;
390404
} catch (JavaModelException e) {
391405
return false;
392406
}
@@ -425,9 +439,15 @@ private static void findTestItemsInTypeBinding(ITypeBinding typeBinding, JavaTes
425439
.build();
426440
} else if (TestFrameworkUtils.JUNIT5_TEST_SEARCHER.isTestClass(type)) {
427441
// to handle @Nested and @Testable classes
442+
// Determine whether it's JUnit 6 or JUnit 5 based on project-level detection,
443+
// since JUnit 6 extends JUnit 5 and both searchers match the same annotations.
444+
final List<TestKind> projectKinds = TestKindProvider.getTestKindsFromCache(
445+
type.getJavaProject());
446+
final TestKind kind = projectKinds.contains(TestKind.JUnit6) ?
447+
TestKind.JUnit6 : TestKind.JUnit5;
428448
classItem = new JavaTestItemBuilder().setJavaElement(type)
429449
.setLevel(TestLevel.CLASS)
430-
.setKind(TestKind.JUnit5)
450+
.setKind(kind)
431451
.build();
432452
}
433453
}

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@
5656
"contributes": {
5757
"javaExtensions": [
5858
"./server/com.microsoft.java.test.plugin-0.43.1.jar",
59-
"./server/junit-jupiter-api_5.14.1.jar",
59+
"./server/junit-jupiter-api_5.14.3.jar",
6060
"./server/junit-jupiter-api_6.0.1.jar",
61-
"./server/junit-jupiter-engine_5.14.1.jar",
61+
"./server/junit-jupiter-engine_5.14.3.jar",
6262
"./server/junit-jupiter-engine_6.0.1.jar",
6363
"./server/junit-jupiter-migrationsupport_5.14.1.jar",
64-
"./server/junit-jupiter-params_5.14.1.jar",
64+
"./server/junit-jupiter-params_5.14.3.jar",
6565
"./server/junit-jupiter-params_6.0.1.jar",
66-
"./server/junit-platform-commons_1.14.1.jar",
66+
"./server/junit-platform-commons_1.14.3.jar",
6767
"./server/junit-platform-commons_6.0.1.jar",
68-
"./server/junit-platform-engine_1.14.1.jar",
68+
"./server/junit-platform-engine_1.14.3.jar",
6969
"./server/junit-platform-engine_6.0.1.jar",
70-
"./server/junit-platform-launcher_1.14.1.jar",
70+
"./server/junit-platform-launcher_1.14.3.jar",
7171
"./server/junit-platform-launcher_6.0.1.jar",
7272
"./server/junit-platform-runner_1.14.1.jar",
7373
"./server/junit-platform-suite-api_1.14.1.jar",

0 commit comments

Comments
 (0)