blob: 693c15edc2c07086212bf345e14c6ceb2d7e362c [file] [log] [blame]
package org.junit.tests.listening;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
public class TestListenerTest {
int count;
class ErrorListener extends RunListener {
@Override
public void testRunStarted(Description description) throws Exception {
throw new Error();
}
}
public static class OneTest {
@Test
public void nothing() {
}
}
@Test(expected = Error.class)
public void failingListener() {
JUnitCore runner = new JUnitCore();
runner.addListener(new ErrorListener());
runner.run(OneTest.class);
}
class ExceptionListener extends ErrorListener {
@Override
public void testRunStarted(Description description) throws Exception {
count++;
throw new Exception();
}
}
@Test
public void reportsFailureOfListener() {
JUnitCore core = new JUnitCore();
core.addListener(new ExceptionListener());
count = 0;
Result result = core.run(OneTest.class);
assertEquals(1, count);
assertEquals(1, result.getFailureCount());
Failure testFailure = result.getFailures().get(0);
assertEquals(Description.TEST_MECHANISM, testFailure.getDescription());
}
@Test
public void freshResultEachTime() {
JUnitCore core = new JUnitCore();
Result first = core.run(OneTest.class);
Result second = core.run(OneTest.class);
assertNotSame(first, second);
}
}