1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.surefire.junitplatform;
20
21 import org.apache.maven.surefire.api.util.ScannerFilter;
22 import org.junit.platform.engine.Filter;
23 import org.junit.platform.launcher.Launcher;
24 import org.junit.platform.launcher.LauncherDiscoveryRequest;
25 import org.junit.platform.launcher.TestPlan;
26
27 import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
28 import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request;
29
30
31
32
33 final class TestPlanScannerFilter implements ScannerFilter {
34
35 private final Launcher launcher;
36
37 private final Filter<?>[] includeAndExcludeFilters;
38
39 TestPlanScannerFilter(Launcher launcher, Filter<?>[] includeAndExcludeFilters) {
40 this.launcher = launcher;
41 this.includeAndExcludeFilters = includeAndExcludeFilters;
42 }
43
44 @Override
45 @SuppressWarnings("rawtypes")
46 public boolean accept(Class testClass) {
47 LauncherDiscoveryRequest discoveryRequest = request()
48 .selectors(selectClass(testClass.getName()))
49 .filters(includeAndExcludeFilters)
50 .build();
51
52 TestPlan testPlan = launcher.discover(discoveryRequest);
53
54 return testPlan.containsTests();
55 }
56 }