package fitnesse.junit; import fitnesse.responders.run.*; import org.junit.runner.Description; import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunNotifier; import util.TimeMeasurement; import fitnesse.wiki.WikiPagePath; public class JUnitRunNotifierResultsListener implements ResultsListener { private final Class<?> mainClass; private final RunNotifier notifier; public JUnitRunNotifierResultsListener(RunNotifier notifier, Class<?> mainClass) { this.notifier = notifier; this.mainClass = mainClass; } @Override public void allTestingComplete(TimeMeasurement totalTimeMeasurement) { } @Override public void announceNumberTestsToRun(int testsToRun) { } @Override public void errorOccured() { } @Override public void newTestStarted(TestPage test, TimeMeasurement timeMeasurement) { notifier.fireTestStarted(descriptionFor(test)); } private Description descriptionFor(TestPage test) { return Description.createTestDescription(mainClass, new WikiPagePath(test.getSourcePage()).toString()); } @Override public void setExecutionLogAndTrackingId(String stopResponderId, CompositeExecutionLog log) { } @Override public void testComplete(TestPage test, TestSummary testSummary, TimeMeasurement timeMeasurement) { if (testSummary.wrong == 0 && testSummary.exceptions == 0) { notifier.fireTestFinished(descriptionFor(test)); } else { notifier.fireTestFailure(new Failure(descriptionFor(test), new AssertionError("wrong: " + testSummary.wrong + " exceptions: " + testSummary.exceptions))); } } @Override public void testOutputChunk(String output) { } @Override public void testSystemStarted(TestSystem testSystem, String testSystemName, String testRunner) { } }