diff --git a/junit-engine-api/src/main/java/org/junit/gen5/engine/DiscoverySelector.java b/junit-engine-api/src/main/java/org/junit/gen5/engine/DiscoverySelector.java index 9c9dc218bb9..2f682640ea3 100644 --- a/junit-engine-api/src/main/java/org/junit/gen5/engine/DiscoverySelector.java +++ b/junit-engine-api/src/main/java/org/junit/gen5/engine/DiscoverySelector.java @@ -17,6 +17,5 @@ * @see EngineDiscoveryRequest */ public interface DiscoverySelector { - void accept(DiscoverySelectorVisitor visitor); } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/DiscoveryRequestBuilder.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/DiscoveryRequestBuilder.java index 4989e260789..3a5318c96cb 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/DiscoveryRequestBuilder.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/DiscoveryRequestBuilder.java @@ -16,6 +16,7 @@ import org.junit.gen5.engine.DiscoveryFilter; import org.junit.gen5.engine.DiscoverySelector; +import org.junit.gen5.engine.GenericFilter; /** * The {@code DiscoveryRequestBuilder} provides a light-weight DSL for @@ -26,31 +27,31 @@ *
  *   DiscoveryRequestBuilder.request()
  *     .select(
- *       packageName("org.junit.gen5"),
- *       packageName("com.junit.samples"),
- *       testClass(TestDescriptorTests.class),
- *       testClassByName("com.junit.samples.SampleTestCase"),
- *       testMethod("com.junit.samples.SampleTestCase", "test2"),
- *       testMethod(TestDescriptorTests.class, "test1"),
- *       testMethod(TestDescriptorTests.class, "test1"),
- *       testMethod(TestDescriptorTests.class, "testWithParams", ParameterType.class),
- *       testMethod(TestDescriptorTests.class, testMethod),
- *       path("/my/local/path1"),
- *       path("/my/local/path2"),
- *       uniqueId("unique-id-1"),
- *       uniqueId("unique-id-2")
+ *       forPackageName("org.junit.gen5"),
+ *       forPackageName("com.junit.samples"),
+ *       forClass(TestDescriptorTests.class),
+ *       forClassName("com.junit.samples.SampleTestCase"),
+ *       forTestMethod("com.junit.samples.SampleTestCase", "test2"),
+ *       forTestMethod(TestDescriptorTests.class, "test1"),
+ *       forTestMethod(TestDescriptorTests.class, "test1"),
+ *       forTestMethod(TestDescriptorTests.class, "testWithParams", ParameterType.class),
+ *       forTestMethod(TestDescriptorTests.class, testMethod),
+ *       forPath("/my/local/path1"),
+ *       forPath("/my/local/path2"),
+ *       forUniqueId("unique-id-1"),
+ *       forUniqueId("unique-id-2")
  *     )
- *     .filterBy(engineIds("junit5"))
- *     .filterBy(classNamePattern("org.junit.gen5.tests"), classNamePattern("org.junit.sample"))
- *     .filterBy(tagsIncluded("Fast"), tagsExcluded("Slow"))
+ *     .filter(byEngineIds("junit5"))
+ *     .filter(byNamePattern("org.junit.gen5.tests"), byNamePattern("org.junit.sample"))
+ *     .filter(includeTags("Fast"), excludeTags("Slow"))
  *   ).build();
  * 
*/ public final class DiscoveryRequestBuilder { private List selectors = new LinkedList<>(); private List engineIdFilters = new LinkedList<>(); - private List> filters = new LinkedList<>(); - private List postFilters = new LinkedList<>(); + private List> discoveryFilters = new LinkedList<>(); + private List postDiscoveryFilters = new LinkedList<>(); public static DiscoveryRequestBuilder request() { return new DiscoveryRequestBuilder(); @@ -70,34 +71,31 @@ public DiscoveryRequestBuilder select(List elements) { return this; } - public DiscoveryRequestBuilder filterBy(EngineIdFilter... filters) { + public DiscoveryRequestBuilder filter(GenericFilter... filters) { if (filters != null) { - this.engineIdFilters.addAll(Arrays.asList(filters)); + Arrays.stream(filters).forEach(this::storeFilter); } return this; } - public DiscoveryRequestBuilder filterBy(DiscoveryFilter... filters) { - if (filters != null) { - this.filters.addAll(Arrays.asList(filters)); + private void storeFilter(GenericFilter filter) { + if (filter instanceof EngineIdFilter) { + this.engineIdFilters.add((EngineIdFilter) filter); } - return this; - } - - public DiscoveryRequestBuilder filterBy(PostDiscoveryFilter... filters) { - if (filters != null) { - this.postFilters.addAll(Arrays.asList(filters)); + else if (filter instanceof PostDiscoveryFilter) { + this.postDiscoveryFilters.add((PostDiscoveryFilter) filter); + } + else if (filter instanceof DiscoveryFilter) { + this.discoveryFilters.add((DiscoveryFilter) filter); } - return this; } public DiscoveryRequest build() { DiscoveryRequest discoveryRequest = new DiscoveryRequest(); discoveryRequest.addSelectors(this.selectors); discoveryRequest.addEngineIdFilters(this.engineIdFilters); - discoveryRequest.addFilters(this.filters); - discoveryRequest.addPostFilters(this.postFilters); + discoveryRequest.addFilters(this.discoveryFilters); + discoveryRequest.addPostFilters(this.postDiscoveryFilters); return discoveryRequest; } - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/Launcher.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/Launcher.java index bcb0def601f..8650dacfb14 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/Launcher.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/Launcher.java @@ -13,12 +13,7 @@ import java.util.Map; import java.util.logging.Logger; -import org.junit.gen5.engine.EngineExecutionListener; -import org.junit.gen5.engine.ExecutionRequest; -import org.junit.gen5.engine.FilterResult; -import org.junit.gen5.engine.TestDescriptor; -import org.junit.gen5.engine.TestEngine; -import org.junit.gen5.engine.TestExecutionResult; +import org.junit.gen5.engine.*; /** * Facade for discovering and executing tests using @@ -50,20 +45,24 @@ * @see TestExecutionListener */ public class Launcher { - private static final Logger LOG = Logger.getLogger(Launcher.class.getName()); - private final TestExecutionListenerRegistry listenerRegistry = new TestExecutionListenerRegistry(); - private final TestEngineRegistry testEngineRegistry; + private final TestExecutionListenerRegistry testExecutionListenerRegistry; public Launcher() { - this(new ServiceLoaderTestEngineRegistry()); + this(new ServiceLoaderTestEngineRegistry(), new TestExecutionListenerRegistry()); } - // for tests only + // For tests only Launcher(TestEngineRegistry testEngineRegistry) { + this(testEngineRegistry, new TestExecutionListenerRegistry()); + } + + // For tests only + Launcher(TestEngineRegistry testEngineRegistry, TestExecutionListenerRegistry testExecutionListenerRegistry) { this.testEngineRegistry = testEngineRegistry; + this.testExecutionListenerRegistry = testExecutionListenerRegistry; } /** @@ -72,7 +71,7 @@ public Launcher() { * @param listeners the listeners to be notified of test execution events */ public void registerTestExecutionListeners(TestExecutionListener... listeners) { - listenerRegistry.registerListener(listeners); + testExecutionListenerRegistry.registerListener(listeners); } /** @@ -123,7 +122,7 @@ private Root discoverRoot(DiscoveryRequest discoveryRequest, String phase) { private void execute(Root root) { TestPlan testPlan = TestPlan.from(root); - TestExecutionListener testExecutionListener = listenerRegistry.getCompositeTestExecutionListener(); + TestExecutionListener testExecutionListener = testExecutionListenerRegistry.getCompositeTestExecutionListener(); testExecutionListener.testPlanExecutionStarted(testPlan); ExecutionListenerAdapter engineExecutionListener = new ExecutionListenerAdapter(testPlan, testExecutionListener); diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/Root.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/Root.java index 7568a077fb4..a15f6b364a1 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/Root.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/Root.java @@ -22,17 +22,20 @@ * @since 5.0 */ final class Root { - private final Map testEngines = new LinkedHashMap<>(); - Iterable getTestEngines() { - return testEngines.keySet(); - } - public void add(TestEngine engine, TestDescriptor testDescriptor) { testEngines.put(engine, testDescriptor); } + public Collection getAllTestDescriptors() { + return testEngines.values(); + } + + Iterable getTestEngines() { + return testEngines.keySet(); + } + TestDescriptor getTestDescriptorFor(TestEngine testEngine) { return testEngines.get(testEngine); } @@ -47,6 +50,10 @@ void applyFilters(DiscoveryRequest discoveryRequest) { accept(filteringVisitor); } + void accept(Visitor visitor) { + testEngines.values().stream().forEach(testEngine -> testEngine.accept(visitor)); + } + void prune() { Visitor pruningVisitor = (descriptor, remove) -> { if (descriptor.isRoot() || descriptor.hasTests()) @@ -56,12 +63,4 @@ void prune() { accept(pruningVisitor); testEngines.values().removeIf(testEngine -> testEngine.getChildren().isEmpty()); } - - void accept(Visitor visitor) { - testEngines.values().stream().forEach(testEngine -> testEngine.accept(visitor)); - } - - public Collection getAllTestDescriptors() { - return testEngines.values(); - } } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TagFilter.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TagFilter.java index b2d4e6e7857..14e4e2e2c59 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TagFilter.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TagFilter.java @@ -18,7 +18,6 @@ import org.junit.gen5.engine.TestTag; public class TagFilter { - public static PostDiscoveryFilter includeTags(String... tagNames) { return includeTags(asList(tagNames)); } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestEngineRegistry.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestEngineRegistry.java index 0dad3dad2c5..e516d5baf77 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestEngineRegistry.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestEngineRegistry.java @@ -16,7 +16,5 @@ * @since 5.0 */ interface TestEngineRegistry { - Iterable getTestEngines(); - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListener.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListener.java index 001c8a32351..ace0943bd55 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListener.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListener.java @@ -42,7 +42,6 @@ * @see TestIdentifier */ public interface TestExecutionListener { - /** * Called when additional test reporting data has been published for * the supplied {@link TestIdentifier}. Can be called at all times. @@ -146,5 +145,4 @@ default void executionStarted(TestIdentifier testIdentifier) { */ default void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) { } - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListenerRegistry.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListenerRegistry.java index dce048b4d9f..54ee9f751ff 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListenerRegistry.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestExecutionListenerRegistry.java @@ -20,7 +20,6 @@ * @since 5.0 */ class TestExecutionListenerRegistry { - private final List testExecutionListeners = new LinkedList<>(); void registerListener(TestExecutionListener... listeners) { diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestId.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestId.java index efa3fb9b097..ce17a90c508 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestId.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestId.java @@ -21,7 +21,6 @@ * @since 5.0 */ public final class TestId implements Serializable { - private static final long serialVersionUID = 1L; private final String uniqueId; @@ -48,5 +47,4 @@ public int hashCode() { public String toString() { return this.uniqueId; } - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestIdentifier.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestIdentifier.java index cd60ed8fe1a..439a9ff898c 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestIdentifier.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestIdentifier.java @@ -30,17 +30,14 @@ * @see TestPlan */ public final class TestIdentifier implements Serializable { - private static final long serialVersionUID = 1L; private final TestId uniqueId; private final String displayName; private final TestSource source; private final Set tags; - private final boolean test; private final boolean container; - private final TestId parentId; static TestIdentifier from(TestDescriptor testDescriptor) { @@ -149,5 +146,4 @@ public int hashCode() { public String toString() { return getDisplayName() + " [" + uniqueId + "]"; } - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestPlan.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestPlan.java index d7ae2b82e26..aef1c0b5815 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/TestPlan.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/TestPlan.java @@ -46,7 +46,6 @@ * @see TestExecutionListener */ public final class TestPlan { - private final Set roots = new LinkedHashSet<>(); private final Map> children = new LinkedHashMap<>(); private final Map allIdentifiers = new LinkedHashMap<>(); diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/LoggingListener.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/LoggingListener.java index 75be0e1a180..952e3739eff 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/LoggingListener.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/LoggingListener.java @@ -31,7 +31,6 @@ * @see LoggingListener#LoggingListener(BiConsumer) */ public class LoggingListener implements TestExecutionListener { - /** * Create a {@code LoggingListener} which delegates to a * {@link java.util.logging.Logger} using a log level of @@ -107,5 +106,4 @@ private void log(String message, Object... args) { private void logWithThrowable(String message, Throwable t, Object... args) { logger.accept(t, () -> String.format(message, args)); } - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/SummaryGeneratingListener.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/SummaryGeneratingListener.java index 4064eac9f10..138ac3d0440 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/SummaryGeneratingListener.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/SummaryGeneratingListener.java @@ -30,9 +30,7 @@ * @see #getSummary() */ public class SummaryGeneratingListener implements TestExecutionListener { - private TestPlan testPlan; - private TestExecutionSummary summary; /** @@ -92,5 +90,4 @@ else if (testExecutionResult.getStatus() == FAILED) { } testExecutionResult.getThrowable().ifPresent(throwable -> summary.addFailure(testIdentifier, throwable)); } - } diff --git a/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/TestExecutionSummary.java b/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/TestExecutionSummary.java index 1e58a6c5400..23ccc98e986 100644 --- a/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/TestExecutionSummary.java +++ b/junit-launcher/src/main/java/org/junit/gen5/launcher/listeners/TestExecutionSummary.java @@ -25,9 +25,6 @@ */ // TODO Design a real interface for TestExecutionSummary and make it threadsafe. public class TestExecutionSummary { - - private final TestPlan testPlan; - final AtomicLong testsStarted = new AtomicLong(); final AtomicLong testsFound = new AtomicLong(); final AtomicLong testsSkipped = new AtomicLong(); @@ -38,6 +35,7 @@ public class TestExecutionSummary { long timeStarted; long timeFinished; + private final TestPlan testPlan; private String message; private List failures = new ArrayList<>(); @@ -108,7 +106,6 @@ public void addFailure(TestIdentifier testIdentifier, Throwable throwable) { } static class Failure { - private final TestIdentifier testIdentifier; private final Throwable exception; @@ -124,7 +121,5 @@ public TestIdentifier getTestIdentifier() { public Throwable getException() { return exception; } - } - } diff --git a/junit-tests/src/test/java/org/junit/gen5/engine/junit4/JUnit4TestEngineDiscoveryTests.java b/junit-tests/src/test/java/org/junit/gen5/engine/junit4/JUnit4TestEngineDiscoveryTests.java index 9be844624dd..ed12a35ea88 100644 --- a/junit-tests/src/test/java/org/junit/gen5/engine/junit4/JUnit4TestEngineDiscoveryTests.java +++ b/junit-tests/src/test/java/org/junit/gen5/engine/junit4/JUnit4TestEngineDiscoveryTests.java @@ -213,7 +213,7 @@ void resolvesClasspathSelector() throws Exception { void resolvesApplyingClassFilters() throws Exception { File root = getClasspathRoot(PlainJUnit4TestCaseWithSingleTestWhichFails.class); - DiscoveryRequest discoveryRequest = request().select(forPaths(singleton(root))).filterBy( + DiscoveryRequest discoveryRequest = request().select(forPaths(singleton(root))).filter( ClassFilter.byNamePattern(".*JUnit4.*"), ClassFilter.byNamePattern(".*Plain.*")).build(); TestDescriptor engineDescriptor = engine.discoverTests(discoveryRequest); @@ -514,7 +514,7 @@ void doesNotResolveMethodOfClassNotAcceptedByClassFilter() throws Exception { // @formatter:off DiscoveryRequest request = request() .select(MethodSelector.forMethod(testClass, testClass.getMethod("failingTest"))) - .filterBy(ClassFilter.byNamePattern("Foo")) + .filter(ClassFilter.byNamePattern("Foo")) .build(); // @formatter:on diff --git a/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherFactory.java b/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherFactory.java index 43519b6f8f3..97541755717 100644 --- a/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherFactory.java +++ b/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherFactory.java @@ -15,7 +15,6 @@ import org.junit.gen5.engine.TestEngine; public class LauncherFactory { - public static Launcher createLauncher(TestEngine... engines) { return createLauncher(asList(engines)); } @@ -23,5 +22,4 @@ public static Launcher createLauncher(TestEngine... engines) { public static Launcher createLauncher(Iterable engines) { return new Launcher(() -> engines); } - } diff --git a/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherTests.java b/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherTests.java index b40ec99019c..ab5403937da 100644 --- a/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherTests.java +++ b/junit-tests/src/test/java/org/junit/gen5/launcher/LauncherTests.java @@ -82,7 +82,7 @@ public void launcherWillNotCallEnginesThatAreFilterByAnEngineIdFilter() { Launcher launcher = createLauncher(firstEngine, secondEngine); TestPlan testPlan = launcher.discover( - request().select(forUniqueId(test1.getUniqueId()), forUniqueId(test2.getUniqueId())).filterBy( + request().select(forUniqueId(test1.getUniqueId()), forUniqueId(test2.getUniqueId())).filter( byEngineId("first")).build()); assertThat(testPlan.getRoots()).hasSize(1);