11
11
package org .junit .platform .launcher .core ;
12
12
13
13
import static org .assertj .core .api .Assertions .assertThat ;
14
+ import static org .junit .jupiter .api .Assertions .assertAll ;
14
15
import static org .junit .jupiter .api .Assertions .assertEquals ;
15
16
import static org .junit .jupiter .api .Assertions .assertThrows ;
16
17
import static org .junit .jupiter .api .Assertions .assertTrue ;
17
18
import static org .junit .platform .commons .util .CollectionUtils .getOnlyElement ;
19
+ import static org .junit .platform .engine .SelectorResolutionResult .unresolved ;
18
20
import static org .junit .platform .engine .TestExecutionResult .successful ;
19
21
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectPackage ;
20
22
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectUniqueId ;
42
44
import org .junit .platform .commons .PreconditionViolationException ;
43
45
import org .junit .platform .commons .logging .LogRecordListener ;
44
46
import org .junit .platform .commons .util .ExceptionUtils ;
47
+ import org .junit .platform .engine .DiscoverySelector ;
45
48
import org .junit .platform .engine .EngineDiscoveryRequest ;
46
49
import org .junit .platform .engine .ExecutionRequest ;
47
50
import org .junit .platform .engine .FilterResult ;
64
67
import org .junit .platform .launcher .TestPlan ;
65
68
import org .junit .platform .launcher .listeners .SummaryGeneratingListener ;
66
69
import org .mockito .ArgumentCaptor ;
70
+ import org .mockito .InOrder ;
67
71
68
72
/**
69
73
* @since 1.0
@@ -121,7 +125,7 @@ public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId
121
125
.configurationParameter (DEFAULT_DISCOVERY_LISTENER_CONFIGURATION_PROPERTY_NAME , "logging" ) //
122
126
.build ());
123
127
assertThat (testPlan .getRoots ()).hasSize (1 );
124
- assertDiscoveryFailed (engine , discoveryListener );
128
+ assertDiscoveryFailed (engine , inOrder ( discoveryListener ), discoveryListener );
125
129
}
126
130
127
131
@ ParameterizedTest
@@ -152,9 +156,11 @@ public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId
152
156
assertThat (testPlan .getRoots ()).hasSize (1 );
153
157
var engineIdentifier = getOnlyElement (testPlan .getRoots ());
154
158
assertThat (getOnlyElement (testPlan .getRoots ()).getDisplayName ()).isEqualTo ("my-engine-id" );
155
- verify (discoveryListener ).launcherDiscoveryStarted (request );
156
- verify (discoveryListener ).launcherDiscoveryFinished (request );
157
- assertDiscoveryFailed (engine , discoveryListener );
159
+
160
+ InOrder inOrder = inOrder (discoveryListener );
161
+ inOrder .verify (discoveryListener ).launcherDiscoveryStarted (request );
162
+ assertDiscoveryFailed (engine , inOrder , discoveryListener );
163
+ inOrder .verify (discoveryListener ).launcherDiscoveryFinished (request );
158
164
159
165
var listener = mock (TestExecutionListener .class );
160
166
launcher .execute (testPlan , listener );
@@ -167,10 +173,13 @@ public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId
167
173
.hasMessage ("TestEngine with ID 'my-engine-id' failed to discover tests" );
168
174
}
169
175
170
- private void assertDiscoveryFailed (TestEngine testEngine , LauncherDiscoveryListener discoveryListener ) {
176
+ private void assertDiscoveryFailed (TestEngine testEngine , InOrder inOrder ,
177
+ LauncherDiscoveryListener discoveryListener ) {
171
178
var engineId = testEngine .getId ();
172
179
var failureCaptor = ArgumentCaptor .forClass (EngineDiscoveryResult .class );
173
- verify (discoveryListener ).engineDiscoveryFinished (eq (UniqueId .forEngine (engineId )), failureCaptor .capture ());
180
+ inOrder .verify (discoveryListener ).engineDiscoveryStarted (UniqueId .forEngine (engineId ));
181
+ inOrder .verify (discoveryListener ).engineDiscoveryFinished (eq (UniqueId .forEngine (engineId )),
182
+ failureCaptor .capture ());
174
183
var result = failureCaptor .getValue ();
175
184
assertThat (result .getStatus ()).isEqualTo (EngineDiscoveryResult .Status .FAILED );
176
185
assertThat (result .getThrowable ()).isPresent ();
@@ -651,4 +660,44 @@ void dryRunModeReportsEventsForAllTestsButDoesNotExecuteThem() {
651
660
inOrder .verify (listener ).testPlanExecutionFinished (any ());
652
661
inOrder .verifyNoMoreInteractions ();
653
662
}
663
+
664
+ @ Test
665
+ void notifiesDiscoveryListenersOfProcessedSelectors () {
666
+ TestEngine engine = new TestEngineStub ("some-engine-id" ) {
667
+
668
+ @ Override
669
+ public TestDescriptor discover (EngineDiscoveryRequest discoveryRequest , UniqueId uniqueId ) {
670
+ discoveryRequest .getSelectorsByType (DiscoverySelector .class ).forEach (selector -> {
671
+ discoveryRequest .getDiscoveryListener ().selectorProcessed (uniqueId , selector , unresolved ());
672
+ });
673
+ return new EngineDescriptor (uniqueId , uniqueId .getLastSegment ().getValue ());
674
+ }
675
+ };
676
+ var engineId = UniqueId .forEngine (engine .getId ());
677
+
678
+ var discoveryListenerOnConfig = mock (LauncherDiscoveryListener .class , "discoveryListenerOnConfig" );
679
+ var discoveryListenerOnLauncher = mock (LauncherDiscoveryListener .class , "discoveryListenerOnLauncher" );
680
+ var discoveryListenerOnRequest = mock (LauncherDiscoveryListener .class , "discoveryListenerOnRequest" );
681
+ var selector = mock (DiscoverySelector .class );
682
+
683
+ var launcherConfig = LauncherFactoryForTestingPurposesOnly .createLauncherConfigBuilderWithDisabledServiceLoading () //
684
+ .addTestEngines (engine ) //
685
+ .addLauncherDiscoveryListeners (discoveryListenerOnConfig ) //
686
+ .build ();
687
+
688
+ var launcher = LauncherFactory .create (launcherConfig );
689
+ launcher .registerLauncherDiscoveryListeners (discoveryListenerOnLauncher );
690
+
691
+ launcher .discover (request () //
692
+ .selectors (selector ) //
693
+ .listeners (discoveryListenerOnRequest ) //
694
+ .build ());
695
+
696
+ assertAll ( //
697
+ () -> verify (discoveryListenerOnConfig ).selectorProcessed (engineId , selector , unresolved ()), //
698
+ () -> verify (discoveryListenerOnLauncher ).selectorProcessed (engineId , selector , unresolved ()), //
699
+ () -> verify (discoveryListenerOnRequest ).selectorProcessed (engineId , selector , unresolved ()) //
700
+ );
701
+ }
702
+
654
703
}
0 commit comments