1 package org.junit.tests.running.methods;
2
3 import static org.junit.Assert.assertEquals;
4
5 import java.util.Arrays;
6 import java.util.Collection;
7 import java.util.Collections;
8 import java.util.List;
9
10 import junit.framework.JUnit4TestAdapter;
11 import org.junit.After;
12 import org.junit.AfterClass;
13 import org.junit.Before;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.junit.runners.BlockJUnit4ClassRunner;
18 import org.junit.runners.Parameterized;
19 import org.junit.runners.Parameterized.Parameters;
20 import org.junit.runners.model.InitializationError;
21
22 @RunWith(Parameterized.class)
23 public class ParameterizedTestMethodTest {
24
25 @SuppressWarnings("all")
26 public static class EverythingWrong {
27 private EverythingWrong() {
28 }
29
30 @BeforeClass
31 public void notStaticBC() {
32 }
33
34 @BeforeClass
35 static void notPublicBC() {
36 }
37
38 @BeforeClass
39 public static int nonVoidBC() {
40 return 0;
41 }
42
43 @BeforeClass
44 public static void argumentsBC(int i) {
45 }
46
47 @BeforeClass
48 public static void fineBC() {
49 }
50
51 @AfterClass
52 public void notStaticAC() {
53 }
54
55 @AfterClass
56 static void notPublicAC() {
57 }
58
59 @AfterClass
60 public static int nonVoidAC() {
61 return 0;
62 }
63
64 @AfterClass
65 public static void argumentsAC(int i) {
66 }
67
68 @AfterClass
69 public static void fineAC() {
70 }
71
72 @After
73 public static void staticA() {
74 }
75
76 @After
77 void notPublicA() {
78 }
79
80 @After
81 public int nonVoidA() {
82 return 0;
83 }
84
85 @After
86 public void argumentsA(int i) {
87 }
88
89 @After
90 public void fineA() {
91 }
92
93 @Before
94 public static void staticB() {
95 }
96
97 @Before
98 void notPublicB() {
99 }
100
101 @Before
102 public int nonVoidB() {
103 return 0;
104 }
105
106 @Before
107 public void argumentsB(int i) {
108 }
109
110 @Before
111 public void fineB() {
112 }
113
114 @Test
115 public static void staticT() {
116 }
117
118 @Test
119 void notPublicT() {
120 }
121
122 @Test
123 public int nonVoidT() {
124 return 0;
125 }
126
127 @Test
128 public void argumentsT(int i) {
129 }
130
131 @Test
132 public void fineT() {
133 }
134 }
135
136 private Class<?> fClass;
137 private int fErrorCount;
138
139 static public class SuperWrong {
140 @Test
141 void notPublic() {
142 }
143 }
144
145 static public class SubWrong extends SuperWrong {
146 @Test
147 public void justFine() {
148 }
149 }
150
151 static public class SubShadows extends SuperWrong {
152 @Override
153 @Test
154 public void notPublic() {
155 }
156 }
157
158 public ParameterizedTestMethodTest(Class<?> class1, int errorCount) {
159 fClass = class1;
160 fErrorCount = errorCount;
161 }
162
163 @Parameters
164 public static Collection<Object[]> params() {
165 return Arrays.asList(new Object[][]{
166 {EverythingWrong.class, 1 + 4 * 5}, {SubWrong.class, 1},
167 {SubShadows.class, 0}});
168 }
169
170 private List<Throwable> validateAllMethods(Class<?> clazz) {
171 try {
172 new BlockJUnit4ClassRunner(clazz);
173 } catch (InitializationError e) {
174 return e.getCauses();
175 }
176 return Collections.emptyList();
177 }
178
179 @Test
180 public void testFailures() throws Exception {
181 List<Throwable> problems = validateAllMethods(fClass);
182 assertEquals(fErrorCount, problems.size());
183 }
184
185 public static junit.framework.Test suite() {
186 return new JUnit4TestAdapter(ParameterizedTestMethodTest.class);
187 }
188 }