diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java index 3e4a51f0938c..7b74dd6413b6 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java @@ -116,22 +116,24 @@ public class JUnit4IdeaTestRunner implements IdeaTestRunner { field.setAccessible(true); final Filter filter = (Filter)field.get(request); final String filterDescription = filter.describe(); - try { - final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null); - for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext();) { - final Description childDescription = (Description)iterator.next(); - if (filter.shouldRun(childDescription)) { - failedTestsDescription.addChild(childDescription); + if (filterDescription != null && (filterDescription.startsWith("Failed tests") || filterDescription.startsWith("Ignored"))) { + try { + final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null); + for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext();) { + final Description childDescription = (Description)iterator.next(); + if (filter.shouldRun(childDescription)) { + failedTestsDescription.addChild(childDescription); + } + } + description = failedTestsDescription; + if (!failedTestsDescription.isTest() && failedTestsDescription.testCount() == 1 && filterDescription.startsWith("Method")) { + description = (Description)failedTestsDescription.getChildren().get(0); } } - description = failedTestsDescription; - if (!failedTestsDescription.isTest() && failedTestsDescription.testCount() == 1 && filterDescription.startsWith("Method")) { - description = (Description)failedTestsDescription.getChildren().get(0); + catch (NoSuchMethodError e) { + //junit 4.0 doesn't have method createSuite(String, Annotation...) : skip it } } - catch (NoSuchMethodError e) { - //junit 4.0 doesn't have method createSuite(String, Annotation...) : skip it - } return description; } diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java index 6ca0addef694..da511ef7a000 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -134,7 +134,16 @@ public class JUnit4TestRunnerUtil { return super.getRunner(); } }; - return classRequest.filterWith(Description.createTestDescription(clazz, methodName)); + final Filter ignoredTestFilter = Filter.matchMethodDescription(Description.createTestDescription(clazz, methodName)); + return classRequest.filterWith(new Filter() { + public boolean shouldRun(Description description) { + return ignoredTestFilter.shouldRun(description); + } + + public String describe() { + return "Ignored " + methodName; + } + }); } } catch (Exception ignored) {