blob: ec497012e73bc9d62654bcdc4ce82c4572e9cbbe [file] [log] [blame]
package org.junit.tests.junit3compatibility;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import junit.framework.AssertionFailedError;
import junit.framework.JUnit4TestAdapter;
import junit.framework.TestListener;
import junit.framework.TestResult;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.BlockJUnit4ClassRunner;
public class InitializationErrorForwardCompatibilityTest {
public static class CantInitialize extends Runner {
private static final String UNIQUE_ERROR_MESSAGE = "Unique error message";
public CantInitialize(Class<?> klass) throws Exception {
throw new Exception(UNIQUE_ERROR_MESSAGE);
}
@Override
public Description getDescription() {
return Description.EMPTY;
}
@Override
public void run(RunNotifier notifier) {
}
}
@RunWith(CantInitialize.class)
public static class CantInitializeTests {
}
private JUnit4TestAdapter fAdapter;
@Before
public void createAdapter() {
fAdapter = new JUnit4TestAdapter(
CantInitializeTests.class);
}
@Test
public void initializationErrorsShowUpAsWarnings() {
assertEquals(1, fAdapter.getTests().size());
}
@Test
public void initializationErrorsAreThrownAtRuntime() {
TestResult result = new TestResult();
fAdapter.run(result);
assertEquals(1, result.errorCount());
assertEquals(CantInitialize.UNIQUE_ERROR_MESSAGE, result.errors()
.nextElement().exceptionMessage());
}
private final class ErrorRememberingListener implements TestListener {
private junit.framework.Test fError;
public void addError(junit.framework.Test test, Throwable e) {
fError = test;
}
public void addFailure(junit.framework.Test test,
AssertionFailedError t) {
}
public void endTest(junit.framework.Test test) {
}
public void startTest(junit.framework.Test test) {
}
public junit.framework.Test getError() {
return fError;
}
}
@Test
public void generatedErrorTestsMatchUp() {
junit.framework.Test shouldFail = fAdapter.getTests().get(0);
TestResult result = new TestResult();
ErrorRememberingListener listener = new ErrorRememberingListener();
result.addListener(listener);
fAdapter.run(result);
assertNotNull(listener.getError());
assertTrue(shouldFail == listener.getError());
}
public static class InitializesWithError extends BlockJUnit4ClassRunner {
public InitializesWithError(Class<?> klass) throws Exception {
super(klass);
throw new Exception();
}
}
}