diff --git a/java/java-runtime/src/com/intellij/execution/TestDiscoveryListener.java b/java/java-runtime/src/com/intellij/execution/TestDiscoveryListener.java index 7d33ce1ec650..7991143070a6 100644 --- a/java/java-runtime/src/com/intellij/execution/TestDiscoveryListener.java +++ b/java/java-runtime/src/com/intellij/execution/TestDiscoveryListener.java @@ -29,13 +29,15 @@ public abstract class TestDiscoveryListener { } } - public void testFinished(String className, String methodName) { - try { - final Object data = getData(); - Method testEnded = data.getClass().getMethod("testEnded", new Class[] {String.class}); - testEnded.invoke(data, new Object[] {getFrameworkId() + className + "-" + methodName}); - } catch (Throwable t) { - t.printStackTrace(); + public void testFinished(String className, String methodName, boolean succeed) { + if (succeed) { + try { + final Object data = getData(); + Method testEnded = data.getClass().getMethod("testEnded", new Class[] {String.class}); + testEnded.invoke(data, new Object[] {getFrameworkId() + className + "-" + methodName}); + } catch (Throwable t) { + t.printStackTrace(); + } } } diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java index 67f08767db8d..01c70c0d5cc9 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java @@ -22,6 +22,7 @@ import org.junit.internal.requests.ClassRequest; import org.junit.internal.requests.FilterRequest; import org.junit.runner.*; import org.junit.runner.manipulation.Filter; +import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; import java.lang.reflect.Field; @@ -68,12 +69,32 @@ public class JUnit4IdeaTestRunner implements IdeaTestRunner { for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { final IDEAJUnitListener junitListener = (IDEAJUnitListener)Class.forName((String)iterator.next()).newInstance(); runner.addListener(new RunListener() { + private boolean mySuccess; public void testStarted(Description description) throws Exception { + mySuccess = true; junitListener.testStarted(JUnit4ReflectionUtil.getClassName(description), JUnit4ReflectionUtil.getMethodName(description)); } + public void testFailure(Failure failure) throws Exception { + mySuccess = false; + } + + public void testAssumptionFailure(Failure failure) { + mySuccess = false; + } + + public void testIgnored(Description description) throws Exception { + mySuccess = false; + } + public void testFinished(Description description) throws Exception { - junitListener.testFinished(JUnit4ReflectionUtil.getClassName(description), JUnit4ReflectionUtil.getMethodName(description)); + final String className = JUnit4ReflectionUtil.getClassName(description); + final String methodName = JUnit4ReflectionUtil.getMethodName(description); + if (junitListener instanceof IDEAJUnitListenerEx) { + ((IDEAJUnitListenerEx)junitListener).testFinished(className, methodName, mySuccess); + } else { + junitListener.testFinished(className, methodName); + } } public void testRunStarted(Description description) throws Exception { diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnitTestDiscoveryListener.java b/plugins/junit_rt/src/com/intellij/junit4/JUnitTestDiscoveryListener.java index b72d225899f3..2b6ce87ec456 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnitTestDiscoveryListener.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnitTestDiscoveryListener.java @@ -22,4 +22,8 @@ public class JUnitTestDiscoveryListener extends TestDiscoveryListener implements public String getFrameworkId() { return "j"; } + + public void testFinished(String className, String methodName) { + testFinished(className, methodName, true); + } } diff --git a/plugins/junit_rt/src/com/intellij/rt/execution/junit/IDEAJUnitListenerEx.java b/plugins/junit_rt/src/com/intellij/rt/execution/junit/IDEAJUnitListenerEx.java index d3567713e8dc..2adc71e19e92 100644 --- a/plugins/junit_rt/src/com/intellij/rt/execution/junit/IDEAJUnitListenerEx.java +++ b/plugins/junit_rt/src/com/intellij/rt/execution/junit/IDEAJUnitListenerEx.java @@ -18,4 +18,5 @@ package com.intellij.rt.execution.junit; public interface IDEAJUnitListenerEx extends IDEAJUnitListener { void testRunStarted(String name); void testRunFinished(String name); + void testFinished(String className, String methodName, boolean succeed); } diff --git a/plugins/testng_rt/src/org/testng/TestNGTestDiscoveryListener.java b/plugins/testng_rt/src/org/testng/TestNGTestDiscoveryListener.java index 64b318a448a0..8c9e0dbd68ed 100644 --- a/plugins/testng_rt/src/org/testng/TestNGTestDiscoveryListener.java +++ b/plugins/testng_rt/src/org/testng/TestNGTestDiscoveryListener.java @@ -23,29 +23,17 @@ public class TestNGTestDiscoveryListener extends TestDiscoveryListener implement } public void onTestSuccess(ITestResult result) { - onTestEnded(result); + testFinished(result.getTestClass().getName(), result.getName(), true); } - public void onTestFailure(ITestResult result) { - onTestEnded(result); - } - - public void onTestSkipped(ITestResult result) { - onTestEnded(result); - } - - public void onTestFailedButWithinSuccessPercentage(ITestResult result) { - onTestEnded(result); - } + public void onTestFailure(ITestResult result) {} + public void onTestSkipped(ITestResult result) {} + public void onTestFailedButWithinSuccessPercentage(ITestResult result) {} public void onStart(ITestContext context) {} public void onFinish(ITestContext context) {} - private void onTestEnded(ITestResult result) { - testFinished(result.getTestClass().getName(), result.getName()); - } - public void onStart(ISuite suite) { testRunStarted(suite.getName()); }