13
13
import static org .assertj .core .api .Assertions .assertThat ;
14
14
import static org .junit .jupiter .api .Assertions .assertAll ;
15
15
import static org .junit .jupiter .api .Assertions .assertEquals ;
16
+ import static org .junit .platform .engine .discovery .ClassNameFilter .includeClassNamePatterns ;
16
17
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectClass ;
17
18
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectMethod ;
19
+ import static org .junit .platform .engine .discovery .DiscoverySelectors .selectPackage ;
18
20
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectUniqueId ;
19
21
import static org .junit .platform .launcher .LauncherConstants .CRITICAL_DISCOVERY_ISSUE_SEVERITY_PROPERTY_NAME ;
20
22
import static org .junit .platform .launcher .core .LauncherDiscoveryRequestBuilder .request ;
21
23
import static org .junit .platform .testkit .engine .EventConditions .finishedWithFailure ;
22
24
import static org .junit .platform .testkit .engine .TestExecutionResultConditions .message ;
23
25
24
26
import java .util .List ;
27
+ import java .util .function .Consumer ;
28
+ import java .util .regex .Pattern ;
25
29
26
30
import org .junit .jupiter .api .AfterEach ;
27
31
import org .junit .jupiter .api .Assertions ;
28
32
import org .junit .jupiter .api .BeforeEach ;
33
+ import org .junit .jupiter .api .Named ;
29
34
import org .junit .jupiter .api .Nested ;
30
35
import org .junit .jupiter .api .Test ;
31
36
import org .junit .jupiter .engine .NestedTestClassesTests .OuterClass .NestedClass ;
32
37
import org .junit .jupiter .engine .NestedTestClassesTests .OuterClass .NestedClass .RecursiveNestedClass ;
33
38
import org .junit .jupiter .engine .NestedTestClassesTests .OuterClass .NestedClass .RecursiveNestedSiblingClass ;
39
+ import org .junit .jupiter .params .ParameterizedTest ;
40
+ import org .junit .jupiter .params .provider .MethodSource ;
34
41
import org .junit .platform .engine .DiscoveryIssue .Severity ;
35
42
import org .junit .platform .engine .TestDescriptor ;
36
43
import org .junit .platform .engine .support .descriptor .ClassSource ;
37
44
import org .junit .platform .launcher .LauncherDiscoveryRequest ;
45
+ import org .junit .platform .launcher .core .LauncherDiscoveryRequestBuilder ;
38
46
import org .junit .platform .testkit .engine .EngineExecutionResults ;
39
47
import org .junit .platform .testkit .engine .Events ;
40
48
@@ -53,20 +61,36 @@ void nestedTestsAreCorrectlyDiscovered() {
53
61
assertEquals (5 , engineDescriptor .getDescendants ().size (), "# resolved test descriptors" );
54
62
}
55
63
56
- @ Test
57
- void nestedTestsAreExecuted () {
58
- EngineExecutionResults executionResults = executeTestsForClass (TestCaseWithNesting .class );
59
- Events containers = executionResults .containerEvents ();
60
- Events tests = executionResults .testEvents ();
64
+ @ ParameterizedTest (name = "{0}" )
65
+ @ MethodSource
66
+ void nestedTestsAreExecutedInTheRightOrder (Consumer <LauncherDiscoveryRequestBuilder > configurer ) {
67
+ EngineExecutionResults executionResults = executeTests (configurer );
61
68
69
+ Events tests = executionResults .testEvents ();
62
70
assertEquals (3 , tests .started ().count (), "# tests started" );
63
71
assertEquals (2 , tests .succeeded ().count (), "# tests succeeded" );
64
72
assertEquals (1 , tests .failed ().count (), "# tests failed" );
65
73
74
+ assertThat (tests .started ().map (it -> it .getTestDescriptor ().getDisplayName ())) //
75
+ .containsExactlyInAnyOrder ("someTest()" , "successful()" , "failing()" ) //
76
+ .containsSubsequence ("someTest()" , "successful()" ) //
77
+ .containsSubsequence ("someTest()" , "failing()" );
78
+
79
+ Events containers = executionResults .containerEvents ();
66
80
assertEquals (3 , containers .started ().count (), "# containers started" );
67
81
assertEquals (3 , containers .finished ().count (), "# containers finished" );
68
82
}
69
83
84
+ static List <Named <Consumer <LauncherDiscoveryRequestBuilder >>> nestedTestsAreExecutedInTheRightOrder () {
85
+ return List .of ( //
86
+ Named .of ("class selector" , request -> request //
87
+ .selectors (selectClass (TestCaseWithNesting .class ))),
88
+ Named .of ("package selector" , request -> request //
89
+ .selectors (selectPackage (TestCaseWithNesting .class .getPackageName ())) //
90
+ .filters (includeClassNamePatterns (Pattern .quote (TestCaseWithNesting .class .getName ()) + ".*" ))) //
91
+ );
92
+ }
93
+
70
94
@ Test
71
95
void doublyNestedTestsAreCorrectlyDiscovered () {
72
96
LauncherDiscoveryRequest request = request ().selectors (selectClass (TestCaseWithDoubleNesting .class )).build ();
0 commit comments