10
10
11
11
package org .junit .jupiter .engine .extension ;
12
12
13
+ import static java .lang .StackWalker .Option .RETAIN_CLASS_REFERENCE ;
13
14
import static org .assertj .core .api .Assertions .assertThat ;
14
15
import static org .junit .jupiter .api .Order .DEFAULT ;
15
16
import static org .junit .jupiter .api .TestInstance .Lifecycle .PER_CLASS ;
41
42
*/
42
43
class OrderedProgrammaticExtensionRegistrationTests extends AbstractJupiterTestEngineTests {
43
44
44
- private static final List <Integer > callSequence = new ArrayList <>();
45
+ private static final List <String > callSequence = new ArrayList <>();
45
46
46
47
/**
47
48
* This method basically verifies the implementation of
@@ -69,17 +70,35 @@ void clearCallSequence() {
69
70
70
71
@ Test
71
72
void instanceLevelWithDefaultOrder () {
72
- assertOutcome (DefaultOrderInstanceLevelExtensionRegistrationTestCase .class , 1 , 2 , 3 );
73
+ Class <?> testClass = DefaultOrderInstanceLevelExtensionRegistrationTestCase .class ;
74
+ String testClassName = testClass .getSimpleName ();
75
+ assertOutcome (testClass , //
76
+ testClassName + " :: extension1 :: before test" , //
77
+ testClassName + " :: extension2 :: before test" , //
78
+ testClassName + " :: extension3 :: before test" //
79
+ );
73
80
}
74
81
75
82
@ Test
76
83
void instanceLevelWithExplicitOrder () {
77
- assertOutcome (ExplicitOrderInstanceLevelExtensionRegistrationTestCase .class , 3 , 2 , 1 );
84
+ Class <?> testClass = ExplicitOrderInstanceLevelExtensionRegistrationTestCase .class ;
85
+ String testClassName = testClass .getSimpleName ();
86
+ assertOutcome (testClass , //
87
+ testClassName + " :: extension3 :: before test" , //
88
+ testClassName + " :: extension2 :: before test" , //
89
+ testClassName + " :: extension1 :: before test" //
90
+ );
78
91
}
79
92
80
93
@ Test
81
94
void instanceLevelWithDefaultOrderAndExplicitOrder () {
82
- assertOutcome (DefaultOrderAndExplicitOrderInstanceLevelExtensionRegistrationTestCase .class , 3 , 1 , 2 );
95
+ Class <?> testClass = DefaultOrderAndExplicitOrderInstanceLevelExtensionRegistrationTestCase .class ;
96
+ String testClassName = testClass .getSimpleName ();
97
+ assertOutcome (testClass , //
98
+ testClassName + " :: extension3 :: before test" , //
99
+ testClassName + " :: extension1 :: before test" , //
100
+ testClassName + " :: extension2 :: before test" //
101
+ );
83
102
}
84
103
85
104
/**
@@ -91,44 +110,88 @@ void instanceLevelWithDefaultOrderAndExplicitOrder() {
91
110
*/
92
111
@ Test
93
112
void instanceLevelWithDefaultOrderPlusOneAndDefaultOrder () {
94
- assertOutcome (DefaultOrderPlusOneAndDefaultOrderInstanceLevelExtensionRegistrationTestCase .class , 1 , 3 , 2 );
113
+ Class <?> testClass = DefaultOrderPlusOneAndDefaultOrderInstanceLevelExtensionRegistrationTestCase .class ;
114
+ String testClassName = testClass .getSimpleName ();
115
+ assertOutcome (testClass , //
116
+ testClassName + " :: extension1 :: after test" , //
117
+ testClassName + " :: extension3 :: after test" , //
118
+ testClassName + " :: extension2 :: after test" //
119
+ );
95
120
}
96
121
97
122
@ Test
98
123
void instanceLevelWithDefaultOrderAndExplicitOrderWithTestInstancePerClassLifecycle () {
99
- assertOutcome (
100
- DefaultOrderAndExplicitOrderInstanceLevelExtensionRegistrationWithTestInstancePerClassLifecycleTestCase .class ,
101
- 3 , 1 , 2 );
124
+ Class <?> testClass = DefaultOrderAndExplicitOrderInstanceLevelExtensionRegistrationWithTestInstancePerClassLifecycleTestCase .class ;
125
+ String testClassName = testClass .getSimpleName ();
126
+ assertOutcome (testClass , //
127
+ testClassName + " :: extension3 :: before test" , //
128
+ testClassName + " :: extension1 :: before test" , //
129
+ testClassName + " :: extension2 :: before test" //
130
+ );
102
131
}
103
132
104
133
@ Test
105
134
void classLevelWithDefaultOrderAndExplicitOrder () {
106
- assertOutcome (DefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class , 3 , 1 , 2 );
135
+ Class <?> testClass = DefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
136
+ String testClassName = testClass .getSimpleName ();
137
+ assertOutcome (testClass , //
138
+ testClassName + " :: extension3 :: before test" , //
139
+ testClassName + " :: extension1 :: before test" , //
140
+ testClassName + " :: extension2 :: before test" //
141
+ );
107
142
}
108
143
109
144
@ Test
110
145
void classLevelWithDefaultOrderAndExplicitOrderInheritedFromSuperclass () {
111
- assertOutcome (InheritedDefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class , 3 , 1 , 2 );
146
+ Class <?> testClass = InheritedDefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
147
+ Class <?> parent = DefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
148
+ String parentName = parent .getSimpleName ();
149
+ assertOutcome (testClass , //
150
+ parentName + " :: extension3 :: before test" , //
151
+ parentName + " :: extension1 :: before test" , //
152
+ parentName + " :: extension2 :: before test" //
153
+ );
112
154
}
113
155
114
156
@ Test
115
157
void classLevelWithDefaultOrderShadowingOrderFromSuperclass () {
116
- assertOutcome (DefaultOrderShadowingDefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class , 1 ,
117
- 2 , 3 );
158
+ Class <?> testClass = DefaultOrderShadowingDefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
159
+ String testClassName = testClass .getSimpleName ();
160
+ Class <?> parent = DefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
161
+ String parentName = parent .getSimpleName ();
162
+ assertOutcome (testClass , //
163
+ parentName + " :: extension1 :: before test" , //
164
+ parentName + " :: extension2 :: before test" , //
165
+ testClassName + " :: extension3 :: before test" //
166
+ );
118
167
}
119
168
120
169
@ Test
121
170
void classLevelWithExplicitOrderShadowingOrderFromSuperclass () {
122
- assertOutcome (ExplicitOrderShadowingDefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ,
123
- 3 , 2 , 1 );
171
+ Class <?> testClass = ExplicitOrderShadowingDefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
172
+ String testClassName = testClass .getSimpleName ();
173
+ Class <?> parent = DefaultOrderAndExplicitOrderClassLevelExtensionRegistrationTestCase .class ;
174
+ String parentName = parent .getSimpleName ();
175
+ assertOutcome (testClass , //
176
+ parentName + " :: extension3 :: before test" , //
177
+ testClassName + " :: extension2 :: before test" , //
178
+ parentName + " :: extension1 :: before test" //
179
+ );
124
180
}
125
181
126
182
@ Test
127
183
void classLevelWithDefaultOrderAndExplicitOrderFromInterface () {
128
- assertOutcome (DefaultOrderAndExplicitOrderExtensionRegistrationFromInterfaceTestCase .class , 3 , 1 , 2 );
184
+ Class <?> testClass = DefaultOrderAndExplicitOrderExtensionRegistrationFromInterfaceTestCase .class ;
185
+ Class <?> testInterface = DefaultOrderAndExplicitOrderClassLevelExtensionRegistrationInterface .class ;
186
+ String interfaceName = testInterface .getSimpleName ();
187
+ assertOutcome (testClass , //
188
+ interfaceName + " :: extension3 :: before test" , //
189
+ interfaceName + " :: extension1 :: before test" , //
190
+ interfaceName + " :: extension2 :: before test" //
191
+ );
129
192
}
130
193
131
- private void assertOutcome (Class <?> testClass , Integer ... values ) {
194
+ private void assertOutcome (Class <?> testClass , String ... values ) {
132
195
executeTestsForClass (testClass ).testEvents ().assertStatistics (stats -> stats .succeeded (1 ));
133
196
assertThat (callSequence ).containsExactly (values );
134
197
}
@@ -280,30 +343,32 @@ static class DefaultOrderAndExplicitOrderExtensionRegistrationFromInterfaceTestC
280
343
281
344
private static class BeforeEachExtension implements BeforeEachCallback {
282
345
283
- private final int id ;
346
+ private final String prefix ;
284
347
285
348
BeforeEachExtension (int id ) {
286
- this .id = id ;
349
+ Class <?> callerClass = StackWalker .getInstance (RETAIN_CLASS_REFERENCE ).getCallerClass ();
350
+ this .prefix = callerClass .getSimpleName () + " :: extension" + id + " :: before " ;
287
351
}
288
352
289
353
@ Override
290
354
public void beforeEach (ExtensionContext context ) {
291
- callSequence .add (this .id );
355
+ callSequence .add (this .prefix + context . getRequiredTestMethod (). getName () );
292
356
}
293
357
294
358
}
295
359
296
360
private static class AfterEachExtension implements AfterEachCallback {
297
361
298
- private final int id ;
362
+ private final String prefix ;
299
363
300
364
AfterEachExtension (int id ) {
301
- this .id = id ;
365
+ Class <?> callerClass = StackWalker .getInstance (RETAIN_CLASS_REFERENCE ).getCallerClass ();
366
+ this .prefix = callerClass .getSimpleName () + " :: extension" + id + " :: after " ;
302
367
}
303
368
304
369
@ Override
305
370
public void afterEach (ExtensionContext context ) {
306
- callSequence .add (this .id );
371
+ callSequence .add (this .prefix + context . getRequiredTestMethod (). getName () );
307
372
}
308
373
309
374
}
0 commit comments