|
25 | 25 | import java.util.Optional; |
26 | 26 | import java.util.Set; |
27 | 27 | import java.util.function.Function; |
| 28 | +import java.util.function.Predicate; |
28 | 29 | import java.util.stream.Collectors; |
29 | 30 | import java.util.stream.Stream; |
30 | 31 |
|
@@ -58,21 +59,32 @@ public class JUnitCustomRunnerTestUnitFinder implements TestUnitFinder { |
58 | 59 | private final TestGroupConfig config; |
59 | 60 | private final Collection<String> excludedRunners; |
60 | 61 | private final Collection<String> includedTestMethods; |
| 62 | + private final Predicate<Class<?>> allow; |
61 | 63 |
|
62 | | - JUnitCustomRunnerTestUnitFinder(TestGroupConfig config, final Collection<String> excludedRunners, |
63 | | - final Collection<String> includedTestMethods) { |
| 64 | + |
| 65 | + public JUnitCustomRunnerTestUnitFinder(TestGroupConfig config, |
| 66 | + Collection<String> excludedRunners, |
| 67 | + Collection<String> includedTestMethods) { |
| 68 | + this(config, excludedRunners, includedTestMethods, r -> true); |
| 69 | + } |
| 70 | + |
| 71 | + public JUnitCustomRunnerTestUnitFinder(TestGroupConfig config, |
| 72 | + Collection<String> excludedRunners, |
| 73 | + Collection<String> includedTestMethods, |
| 74 | + Predicate<Class<?>> filter) { |
64 | 75 | Objects.requireNonNull(config); |
65 | 76 | this.config = config; |
66 | 77 | this.excludedRunners = excludedRunners; |
67 | 78 | this.includedTestMethods = includedTestMethods; |
| 79 | + this.allow = filter; |
68 | 80 | } |
69 | 81 |
|
70 | 82 | @Override |
71 | 83 | public List<TestUnit> findTestUnits(final Class<?> clazz, TestUnitExecutionListener unused) { |
72 | 84 |
|
73 | 85 | final Runner runner = AdaptedJUnitTestUnit.createRunner(clazz); |
74 | 86 |
|
75 | | - if (isExcluded(runner) || isNotARunnableTest(runner, clazz.getName()) || !isIncluded(clazz)) { |
| 87 | + if (!allow.test(runner.getClass()) || isExcluded(runner) || isNotARunnableTest(runner, clazz.getName()) || !isIncluded(clazz)) { |
76 | 88 | if (Log.verbosity().showMinionOutput() && runner instanceof ErrorReportingRunner) { |
77 | 89 | showJUnitErrors(clazz, runner); |
78 | 90 | } |
@@ -148,8 +160,7 @@ private Function<Category, Stream<String>> toCategoryNames() { |
148 | 160 | }; |
149 | 161 | } |
150 | 162 |
|
151 | | - private boolean isNotARunnableTest(final Runner runner, |
152 | | - final String className) { |
| 163 | + private boolean isNotARunnableTest(Runner runner, String className) { |
153 | 164 | try { |
154 | 165 | return (runner == null) |
155 | 166 | || runner.getClass().isAssignableFrom(ErrorReportingRunner.class) |
|
0 commit comments