Class SuiteLauncherDiscoveryRequestBuilder


  • @API(status=INTERNAL,
         since="1.8",
         consumers={"org.junit.platform.suite.engine","org.junit.platform.runner"})
    public final class SuiteLauncherDiscoveryRequestBuilder
    extends java.lang.Object
    The SuiteLauncherDiscoveryRequestBuilder provides a light-weight DSL for generating a LauncherDiscoveryRequest specifically tailored for suite execution.

    Example

    
     SuiteLauncherDiscoveryRequestBuilder.request()
       .selectors(
            selectPackage("org.example.user"),
            selectClass("org.example.payment.PaymentTests"),
            selectClass(ShippingTests.class),
            selectMethod("org.example.order.OrderTests#test1"),
            selectMethod("org.example.order.OrderTests#test2()"),
            selectMethod("org.example.order.OrderTests#test3(java.lang.String)"),
            selectMethod("org.example.order.OrderTests", "test4"),
            selectMethod(OrderTests.class, "test5"),
            selectMethod(OrderTests.class, testMethod),
            selectClasspathRoots(Collections.singleton(Paths.get("/my/local/path1"))),
            selectUniqueId("unique-id-1"),
            selectUniqueId("unique-id-2")
       )
       .filters(
            includeEngines("junit-jupiter", "spek"),
            // excludeEngines("junit-vintage"),
            includeTags("fast"),
            // excludeTags("slow"),
            includeClassNamePatterns(".*Test[s]?")
            // includeClassNamePatterns("org\.example\.tests.*")
       )
       .configurationParameter("key", "value")
       .enableImplicitConfigurationParameters(true)
       .applyConfigurationParametersFromSuite(MySuite.class)
       .applySelectorsAndFiltersFromSuite(MySuite.class)
       .build();
     
    Since:
    1.8
    See Also:
    DiscoverySelectors, ClassNameFilter, EngineFilter, TagFilter
    • Field Detail

      • selectedClassNames

        private final java.util.Set<java.lang.String> selectedClassNames
      • includeClassNamePatternsUsed

        private boolean includeClassNamePatternsUsed
      • filterStandardClassNamePatterns

        private boolean filterStandardClassNamePatterns
      • enableParentConfigurationParameters

        private boolean enableParentConfigurationParameters
    • Constructor Detail

      • SuiteLauncherDiscoveryRequestBuilder

        private SuiteLauncherDiscoveryRequestBuilder()
    • Method Detail

      • selectors

        public SuiteLauncherDiscoveryRequestBuilder selectors​(java.util.List<? extends DiscoverySelector> selectors)
        Add all supplied selectors to the request.
        Parameters:
        selectors - the DiscoverySelectors to add; never null
        Returns:
        this builder for method chaining
      • filters

        public SuiteLauncherDiscoveryRequestBuilder filters​(Filter<?>... filters)
        Add all supplied filters to the request.

        The filters are combined using AND semantics, i.e. all of them have to include a resource for it to end up in the test plan.

        Warning: be cautious when registering multiple competing include EngineFilters or multiple competing exclude EngineFilters for the same discovery request since doing so will likely lead to undesirable results (i.e., zero engines being active).

        Parameters:
        filters - the Filters to add; never null
        Returns:
        this builder for method chaining
      • filterStandardClassNamePatterns

        public SuiteLauncherDiscoveryRequestBuilder filterStandardClassNamePatterns​(boolean filterStandardClassNamePatterns)
        Specify whether to filter standard class name patterns.

        If set to true, standard class name patterns are filtered.

        Parameters:
        filterStandardClassNamePatterns - true to filter standard class name patterns, false otherwise
        Returns:
        this builder for method chaining
      • configurationParameter

        public SuiteLauncherDiscoveryRequestBuilder configurationParameter​(java.lang.String key,
                                                                           java.lang.String value)
        Add the supplied configuration parameter to the request.
        Parameters:
        key - the configuration parameter key under which to store the value; never null or blank
        value - the value to store
        Returns:
        this builder for method chaining
      • configurationParameters

        public SuiteLauncherDiscoveryRequestBuilder configurationParameters​(java.util.Map<java.lang.String,​java.lang.String> configurationParameters)
        Add all supplied configuration parameters to the request.
        Parameters:
        configurationParameters - the map of configuration parameters to add; never null
        Returns:
        this builder for method chaining
        See Also:
        configurationParameter(String, String)
      • enableImplicitConfigurationParameters

        public SuiteLauncherDiscoveryRequestBuilder enableImplicitConfigurationParameters​(boolean enabled)
        Configure whether implicit configuration parameters should be considered.

        By default, in addition to those parameters that are passed explicitly to this builder, configuration parameters are read from system properties and from the junit-platform.properties classpath resource. Passing false to this method, disables the latter two sources so that only explicit configuration parameters are taken into account.

        Parameters:
        enabled - true if implicit configuration parameters should be considered
        Returns:
        this builder for method chaining
        See Also:
        configurationParameter(String, String), configurationParameters(Map)
      • applyConfigurationParametersFromSuite

        public SuiteLauncherDiscoveryRequestBuilder applyConfigurationParametersFromSuite​(java.lang.Class<?> suiteClass)
        Apply a suite's annotation-based configuration to this builder.

        This will apply the configuration from the following annotations.

        Parameters:
        suiteClass - the class to apply the configuration annotations from; never null
        Returns:
        this builder for method chaining
        Since:
        1.11
        See Also:
        Suite
      • addExcludeFilters

        private void addExcludeFilters​(java.lang.Class<?> suiteClass)
      • addClassAndMethodSelectors

        private void addClassAndMethodSelectors​(java.lang.Class<?> suiteClass)
      • addIncludeFilters

        private void addIncludeFilters​(java.lang.Class<?> suiteClass)
      • addOtherSelectors

        private void addOtherSelectors​(java.lang.Class<?> suiteClass)
      • selectClasses

        private java.util.List<ClassSelector> selectClasses​(java.lang.Class<?> suiteClass,
                                                            SelectClasses annotation)
      • toClassSelectors

        private static java.util.stream.Stream<ClassSelector> toClassSelectors​(java.lang.Class<?> suiteClass,
                                                                               SelectClasses annotation)
      • toMethodSelectorFromFQMN

        private static MethodSelector toMethodSelectorFromFQMN​(java.lang.Class<?> suiteClass,
                                                               SelectMethod annotation)
      • toMethodSelector

        private static MethodSelector toMethodSelector​(java.lang.Class<?> suiteClass,
                                                       java.lang.Class<?> type,
                                                       java.lang.String typeName,
                                                       java.lang.Class<?>[] parameterTypes,
                                                       java.lang.String methodName,
                                                       java.lang.String parameterTypeNames)
      • prefixErrorMessageForInvalidSelectMethodUsage

        private static java.lang.String prefixErrorMessageForInvalidSelectMethodUsage​(java.lang.Class<?> suiteClass,
                                                                                      java.lang.String detailMessage)
      • createIncludeClassNameFilter

        private ClassNameFilter createIncludeClassNameFilter​(java.lang.String... patterns)
      • findAnnotationValues

        private static <A extends java.lang.annotation.Annotation,​V> java.util.Optional<V[]> findAnnotationValues​(java.lang.reflect.AnnotatedElement element,
                                                                                                                        java.lang.Class<A> annotationType,
                                                                                                                        java.util.function.Function<A,​V[]> valueExtractor)
      • trimmed

        private static java.util.Optional<java.lang.String[]> trimmed​(java.lang.String[] patterns)