diff --git a/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/util/TestSearchUtils.java b/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/util/TestSearchUtils.java index 6a3ca250..f8b65861 100644 --- a/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/util/TestSearchUtils.java +++ b/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/util/TestSearchUtils.java @@ -62,6 +62,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -223,14 +224,26 @@ public static List findTestPackagesAndTypes(List arguments } } - final List result = new LinkedList<>(); + // Merge packages that share the same ID (e.g. same package name across different source sets) + final Map mergedPackages = new LinkedHashMap<>(); for (final JavaTestItem item : testItemMapping.values()) { if (item.getTestLevel() == TestLevel.PACKAGE) { - result.add(item); + final JavaTestItem existing = mergedPackages.get(item.getId()); + if (existing != null) { + if (item.getChildren() != null) { + for (final JavaTestItem child : item.getChildren()) { + if (existing.getChildren() == null || !existing.getChildren().contains(child)) { + existing.addChild(child); + } + } + } + } else { + mergedPackages.put(item.getId(), item); + } } } - return result; + return new LinkedList<>(mergedPackages.values()); } /**