1 package org.junit.tests.junit3compatibility;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
6
7 import junit.framework.AssertionFailedError;
8 import junit.framework.JUnit4TestAdapter;
9 import junit.framework.TestListener;
10 import junit.framework.TestResult;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.Description;
14 import org.junit.runner.RunWith;
15 import org.junit.runner.Runner;
16 import org.junit.runner.notification.RunNotifier;
17 import org.junit.runners.BlockJUnit4ClassRunner;
18
19 public class InitializationErrorForwardCompatibilityTest {
20 public static class CantInitialize extends Runner {
21 private static final String UNIQUE_ERROR_MESSAGE = "Unique error message";
22
23 public CantInitialize(Class<?> klass) throws Exception {
24 throw new Exception(UNIQUE_ERROR_MESSAGE);
25 }
26
27 @Override
28 public Description getDescription() {
29 return Description.EMPTY;
30 }
31
32 @Override
33 public void run(RunNotifier notifier) {
34 }
35 }
36
37 @RunWith(CantInitialize.class)
38 public static class CantInitializeTests {
39 }
40
41 private JUnit4TestAdapter fAdapter;
42
43 @Before
44 public void createAdapter() {
45 fAdapter = new JUnit4TestAdapter(
46 CantInitializeTests.class);
47 }
48
49 @Test
50 public void initializationErrorsShowUpAsWarnings() {
51 assertEquals(1, fAdapter.getTests().size());
52 }
53
54 @Test
55 public void initializationErrorsAreThrownAtRuntime() {
56 TestResult result = new TestResult();
57 fAdapter.run(result);
58 assertEquals(1, result.errorCount());
59 assertEquals(CantInitialize.UNIQUE_ERROR_MESSAGE, result.errors()
60 .nextElement().exceptionMessage());
61 }
62
63 private final class ErrorRememberingListener implements TestListener {
64 private junit.framework.Test fError;
65
66 public void addError(junit.framework.Test test, Throwable e) {
67 fError = test;
68 }
69
70 public void addFailure(junit.framework.Test test,
71 AssertionFailedError t) {
72 }
73
74 public void endTest(junit.framework.Test test) {
75 }
76
77 public void startTest(junit.framework.Test test) {
78 }
79
80 public junit.framework.Test getError() {
81 return fError;
82 }
83 }
84
85 @Test
86 public void generatedErrorTestsMatchUp() {
87 junit.framework.Test shouldFail = fAdapter.getTests().get(0);
88 TestResult result = new TestResult();
89 ErrorRememberingListener listener = new ErrorRememberingListener();
90 result.addListener(listener);
91 fAdapter.run(result);
92 assertNotNull(listener.getError());
93 assertTrue(shouldFail == listener.getError());
94 }
95
96 public static class InitializesWithError extends BlockJUnit4ClassRunner {
97 public InitializesWithError(Class<?> klass) throws Exception {
98 super(klass);
99 throw new Exception();
100 }
101 }
102 }