View Javadoc
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 }