Class SuiteLauncherDiscoveryRequestBuilder
- java.lang.Object
-
- org.junit.platform.suite.commons.SuiteLauncherDiscoveryRequestBuilder
-
@API(status=INTERNAL, since="1.8", consumers={"org.junit.platform.suite.engine","org.junit.platform.runner"}) public final class SuiteLauncherDiscoveryRequestBuilder extends java.lang.ObjectTheSuiteLauncherDiscoveryRequestBuilderprovides a light-weight DSL for generating aLauncherDiscoveryRequestspecifically 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 Summary
Fields Modifier and Type Field Description private LauncherDiscoveryRequestBuilderdelegateprivate booleanenableParentConfigurationParametersprivate booleanfilterStandardClassNamePatternsprivate booleanincludeClassNamePatternsUsedprivate ConfigurationParametersparentConfigurationParametersprivate java.util.Set<java.lang.String>selectedClassNames
-
Constructor Summary
Constructors Modifier Constructor Description privateSuiteLauncherDiscoveryRequestBuilder()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private voidaddClassAndMethodSelectors(java.lang.Class<?> suiteClass)private voidaddExcludeFilters(java.lang.Class<?> suiteClass)private voidaddIncludeFilters(java.lang.Class<?> suiteClass)private voidaddOtherSelectors(java.lang.Class<?> suiteClass)SuiteLauncherDiscoveryRequestBuilderapplyConfigurationParametersFromSuite(java.lang.Class<?> suiteClass)Apply a suite's annotation-based configuration to this builder.SuiteLauncherDiscoveryRequestBuilderapplySelectorsAndFiltersFromSuite(java.lang.Class<?> suiteClass)Apply a suite's annotation-based discovery selectors and filters to this builder.LauncherDiscoveryRequestbuild()Build theLauncherDiscoveryRequestthat has been configured via this builder.SuiteLauncherDiscoveryRequestBuilderconfigurationParameter(java.lang.String key, java.lang.String value)Add the supplied configuration parameter to the request.SuiteLauncherDiscoveryRequestBuilderconfigurationParameters(java.util.Map<java.lang.String,java.lang.String> configurationParameters)Add all supplied configuration parameters to the request.SuiteLauncherDiscoveryRequestBuilderconfigurationParametersResource(java.lang.String resourceFile)private ClassNameFiltercreateIncludeClassNameFilter(java.lang.String... patterns)SuiteLauncherDiscoveryRequestBuilderenableImplicitConfigurationParameters(boolean enabled)Configure whether implicit configuration parameters should be considered.SuiteLauncherDiscoveryRequestBuilderfilters(Filter<?>... filters)Add all suppliedfiltersto the request.SuiteLauncherDiscoveryRequestBuilderfilterStandardClassNamePatterns(boolean filterStandardClassNamePatterns)Specify whether to filter standard class name patterns.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)SuiteLauncherDiscoveryRequestBuilderlistener(LauncherDiscoveryListener listener)SuiteLauncherDiscoveryRequestBuilderoutputDirectoryCreator(OutputDirectoryCreator outputDirectoryCreator)SuiteLauncherDiscoveryRequestBuilderparentConfigurationParameters(ConfigurationParameters parentConfigurationParameters)Set the parent configuration parameters to use for the request.private static java.lang.StringprefixErrorMessageForInvalidSelectMethodUsage(java.lang.Class<?> suiteClass, java.lang.String detailMessage)static SuiteLauncherDiscoveryRequestBuilderrequest()Create a newSuiteLauncherDiscoveryRequestBuilder.private java.util.List<ClassSelector>selectClasses(java.lang.Class<?> suiteClass, SelectClasses annotation)private MethodSelectorselectMethod(java.lang.Class<?> suiteClass, SelectMethod annotation)SuiteLauncherDiscoveryRequestBuilderselectors(java.util.List<? extends DiscoverySelector> selectors)Add all suppliedselectorsto the request.SuiteLauncherDiscoveryRequestBuilderselectors(DiscoverySelector... selectors)Add all suppliedselectorsto the request.SuiteLauncherDiscoveryRequestBuildersuite(java.lang.Class<?> suiteClass)Deprecated.as of JUnit Platform 1.11 in favor ofapplyConfigurationParametersFromSuite(java.lang.Class<?>)andapplySelectorsAndFiltersFromSuite(java.lang.Class<?>)private static java.util.stream.Stream<ClassSelector>toClassSelectors(java.lang.Class<?> suiteClass, SelectClasses annotation)private static MethodSelectortoMethodSelector(java.lang.Class<?> suiteClass, java.lang.Class<?> type, java.lang.String typeName, java.lang.Class<?>[] parameterTypes, java.lang.String methodName, java.lang.String parameterTypeNames)private MethodSelectortoMethodSelector(java.lang.Class<?> suiteClass, SelectMethod annotation)private static MethodSelectortoMethodSelectorFromFQMN(java.lang.Class<?> suiteClass, SelectMethod annotation)private static java.util.Optional<java.lang.String[]>trimmed(java.lang.String[] patterns)
-
-
-
Field Detail
-
delegate
private final LauncherDiscoveryRequestBuilder delegate
-
selectedClassNames
private final java.util.Set<java.lang.String> selectedClassNames
-
includeClassNamePatternsUsed
private boolean includeClassNamePatternsUsed
-
filterStandardClassNamePatterns
private boolean filterStandardClassNamePatterns
-
parentConfigurationParameters
private ConfigurationParameters parentConfigurationParameters
-
enableParentConfigurationParameters
private boolean enableParentConfigurationParameters
-
-
Method Detail
-
request
public static SuiteLauncherDiscoveryRequestBuilder request()
Create a newSuiteLauncherDiscoveryRequestBuilder.- Returns:
- a new builder
-
selectors
public SuiteLauncherDiscoveryRequestBuilder selectors(DiscoverySelector... selectors)
Add all suppliedselectorsto the request.- Parameters:
selectors- theDiscoverySelectorsto add; nevernull- Returns:
- this builder for method chaining
-
selectors
public SuiteLauncherDiscoveryRequestBuilder selectors(java.util.List<? extends DiscoverySelector> selectors)
Add all suppliedselectorsto the request.- Parameters:
selectors- theDiscoverySelectorsto add; nevernull- Returns:
- this builder for method chaining
-
filters
public SuiteLauncherDiscoveryRequestBuilder filters(Filter<?>... filters)
Add all suppliedfiltersto the request.The
filtersare 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
includeEngineFiltersor multiple competingexcludeEngineFiltersfor the same discovery request since doing so will likely lead to undesirable results (i.e., zero engines being active).- Parameters:
filters- theFilters to add; nevernull- 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-trueto filter standard class name patterns,falseotherwise- 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; nevernullor blankvalue- 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; nevernull- Returns:
- this builder for method chaining
- See Also:
configurationParameter(String, String)
-
configurationParametersResource
public SuiteLauncherDiscoveryRequestBuilder configurationParametersResource(java.lang.String resourceFile)
-
parentConfigurationParameters
public SuiteLauncherDiscoveryRequestBuilder parentConfigurationParameters(ConfigurationParameters parentConfigurationParameters)
Set the parent configuration parameters to use for the request.Any explicit configuration parameters configured via
configurationParameter(String, String)orconfigurationParameters(Map)takes precedence over the supplied configuration parameters.- Parameters:
parentConfigurationParameters- the parent instance to use for looking up configuration parameters that have not been explicitly configured; nevernull- Returns:
- this builder for method chaining
- See Also:
configurationParameter(String, String),configurationParameters(Map)
-
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.propertiesclasspath resource. Passingfalseto this method, disables the latter two sources so that only explicit configuration parameters are taken into account.- Parameters:
enabled-trueif implicit configuration parameters should be considered- Returns:
- this builder for method chaining
- See Also:
configurationParameter(String, String),configurationParameters(Map)
-
outputDirectoryCreator
public SuiteLauncherDiscoveryRequestBuilder outputDirectoryCreator(OutputDirectoryCreator outputDirectoryCreator)
-
listener
@API(status=INTERNAL, since="1.13") public SuiteLauncherDiscoveryRequestBuilder listener(LauncherDiscoveryListener listener)
-
suite
@Deprecated @API(status=DEPRECATED, since="1.11") public SuiteLauncherDiscoveryRequestBuilder suite(java.lang.Class<?> suiteClass)Deprecated.as of JUnit Platform 1.11 in favor ofapplyConfigurationParametersFromSuite(java.lang.Class<?>)andapplySelectorsAndFiltersFromSuite(java.lang.Class<?>)Apply a suite's annotation-based configuration, selectors, and filters to this builder.- Parameters:
suiteClass- the class to apply the annotations from; nevernull- Returns:
- this builder for method chaining
- See Also:
Suite
-
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; nevernull- Returns:
- this builder for method chaining
- Since:
- 1.11
- See Also:
Suite
-
applySelectorsAndFiltersFromSuite
public SuiteLauncherDiscoveryRequestBuilder applySelectorsAndFiltersFromSuite(java.lang.Class<?> suiteClass)
Apply a suite's annotation-based discovery selectors and filters to this builder.This will apply the configuration from the following annotations.
- Parameters:
suiteClass- the class to apply the discovery selectors and filter annotations from; nevernull- 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)
-
build
public LauncherDiscoveryRequest build()
Build theLauncherDiscoveryRequestthat has been configured via this builder.
-
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)
-
selectMethod
private MethodSelector selectMethod(java.lang.Class<?> suiteClass, SelectMethod annotation)
-
toMethodSelector
private MethodSelector toMethodSelector(java.lang.Class<?> suiteClass, SelectMethod 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)
-
-