diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit46ClassesRequestBuilder.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit46ClassesRequestBuilder.java index 4dfe3ac733fa..5f2ed3fefa1a 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit46ClassesRequestBuilder.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit46ClassesRequestBuilder.java @@ -25,12 +25,17 @@ import org.junit.runner.Request; import org.junit.runner.Runner; import org.junit.runners.model.InitializationError; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + public class JUnit46ClassesRequestBuilder { private JUnit46ClassesRequestBuilder() {} - public static Request getClassesRequest(final String suiteName, Class[] classes) { + public static Request getClassesRequest(final String suiteName, Class[] classes, Map classMethods) { + boolean canUseSuiteMethod = canUseSuiteMethod(classMethods); try { - final AllDefaultPossibilitiesBuilder builder = new AllDefaultPossibilitiesBuilder(true); + final AllDefaultPossibilitiesBuilder builder = new AllDefaultPossibilitiesBuilder(canUseSuiteMethod); final Runner suite = new IdeaSuite(builder, classes, suiteName); return Request.runner(suite); } @@ -39,4 +44,20 @@ public class JUnit46ClassesRequestBuilder { } } + private static boolean canUseSuiteMethod(Map classMethods) { + for (Iterator iterator = classMethods.keySet().iterator(); iterator.hasNext(); ) { + Object className = iterator.next(); + Set methods = (Set) classMethods.get(className); + if (methods == null) { + return true; + } + for (Iterator iterator1 = methods.iterator(); iterator1.hasNext(); ) { + String methodName = (String)iterator1.next(); + if ("suite".equals(methodName)) { + return true; + } + } + } + return false; + } } \ No newline at end of file diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java index 864e51a87373..fc75268f3598 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -79,7 +79,7 @@ public class JUnit4TestRunnerUtil { Request allClasses; try { Class.forName("org.junit.runner.Computer"); - allClasses = JUnit46ClassesRequestBuilder.getClassesRequest(suiteName, classes); + allClasses = JUnit46ClassesRequestBuilder.getClassesRequest(suiteName, classes, classMethods); } catch (ClassNotFoundException e) { allClasses = getClassRequestsUsing44API(suiteName, classes);