Top Description Inners Fields Constructors Methods
org.junit.platform.engine.support.discovery

public Class EngineDiscoveryRequestResolver<T extends TestDescriptor>

extends Object
Class Inheritance
Annotations
@API
status:STABLE
since:1.10
Type Parameters
<T>
the type of the engine's descriptor
Static Imports
java.util.stream.Collectors.toCollection, org.apiguardian.api.API.Status.DEPRECATED, .API.Status.EXPERIMENTAL, .API.Status.MAINTAINED, .API.Status.STABLE

Configurable test discovery implementation based on SelectorResolver and TestDescriptor.Visitor that can be reused by different TestEngines.

This resolver takes care of notifying registered EngineDiscoveryListeners about the results of processed DiscoverySelectors.

Since
1.5
See Also
builder(), resolve(EngineDiscoveryRequest, TestDescriptor)

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
EngineDiscoveryRequestResolver.Builder<
the type of the engine's descriptor
T extends TestDescriptor
>

Builder for EngineDiscoveryRequestResolver.

private static class
public static interface
EngineDiscoveryRequestResolver.InitializationContext<T extends TestDescriptor>

The initialization context for creating resolvers and visitors that depend on the EngineDiscoveryRequest to be resolved or the engine descriptor that will be used to collect the results.

Field Summary

Modifier and TypeField and Description
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>>
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>>

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static <
the type of the engine's descriptor
T extends TestDescriptor
>
EngineDiscoveryRequestResolver.Builder<T>

Returns:

a new builder; never null
builder
()

Create a new Builder for creating a EngineDiscoveryRequestResolver.

private <R> List<R>
public void
resolve(EngineDiscoveryRequest
the request to be resolved; never null
request
,
T
the engine's TestDescriptor to be used for adding direct children
engineDescriptor
)

Resolve the supplied EngineDiscoveryRequest and collect the results into the supplied TestDescriptor while forwarding encountered discovery issues to the EngineDiscoveryRequest's org.junit.platform.engine.EngineDiscoveryListener.

public void
resolve(EngineDiscoveryRequest
the request to be resolved; never null
request
,
T
the engine's TestDescriptor to be used for adding direct children
engineDescriptor
,
DiscoveryIssueReporter
the DiscoveryIssueReporter to report issues encountered during resolution
issueReporter
)

Resolve the supplied EngineDiscoveryRequest and collect the results into the supplied TestDescriptor using the supplied DiscoveryIssueReporter to report issues encountered during resolution.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

resolverCreatorsback to summary
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>> resolverCreators
visitorCreatorsback to summary
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>> visitorCreators

Constructor Detail

EngineDiscoveryRequestResolverback to summary
private EngineDiscoveryRequestResolver(List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>> resolverCreators, List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>> visitorCreators)

Method Detail

builderback to summary
public static <T extends TestDescriptor> EngineDiscoveryRequestResolver.Builder<T> builder()

Create a new Builder for creating a EngineDiscoveryRequestResolver.

Parameters
<T>
the type of the engine's descriptor
Returns:EngineDiscoveryRequestResolver.Builder<T>

a new builder; never null

instantiateback to summary
private <R> List<R> instantiate(List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, R>> creators, EngineDiscoveryRequestResolver.InitializationContext<T> context)
resolveback to summary
public void resolve(EngineDiscoveryRequest request, T engineDescriptor)

Resolve the supplied EngineDiscoveryRequest and collect the results into the supplied TestDescriptor while forwarding encountered discovery issues to the EngineDiscoveryRequest's org.junit.platform.engine.EngineDiscoveryListener.

The algorithm works as follows:

  1. Enqueue all selectors in the supplied request to be resolved.
  2. While there are selectors to be resolved, get the next one. Otherwise, the resolution is finished.
    1. Iterate over all registered resolvers in the order they were registered in and find the first one that returns a resolution other than unresolved().
    2. If such a resolution exists, enqueue its selectors.
    3. For each exact match in the resolution, expand its children and enqueue them as well.
  3. Iterate over all registered visitors and let the engine test descriptor accept them.
Parameters
request:EngineDiscoveryRequest

the request to be resolved; never null

engineDescriptor:T

the engine's TestDescriptor to be used for adding direct children

See Also
SelectorResolver, TestDescriptor.Visitor
resolveback to summary
public void resolve(EngineDiscoveryRequest request, T engineDescriptor, DiscoveryIssueReporter issueReporter)

Resolve the supplied EngineDiscoveryRequest and collect the results into the supplied TestDescriptor using the supplied DiscoveryIssueReporter to report issues encountered during resolution.

The algorithm works as described in resolve(EngineDiscoveryRequest, TestDescriptor).

Parameters
request:EngineDiscoveryRequest

the request to be resolved; never null

engineDescriptor:T

the engine's TestDescriptor to be used for adding direct children

issueReporter:DiscoveryIssueReporter

the DiscoveryIssueReporter to report issues encountered during resolution

Annotations
@API
status:EXPERIMENTAL
since:6.0
Since
1.13
See Also
resolve(EngineDiscoveryRequest, TestDescriptor), SelectorResolver, TestDescriptor.Visitor
org.junit.platform.engine.support.discovery back to summary

public Class EngineDiscoveryRequestResolver.Builder<T extends TestDescriptor>

extends Object
Class Inheritance
  • java.lang.Object
  • org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.Builder
Annotations
@API
status:STABLE
since:1.10
Type Parameters
<T>
the type of the engine's descriptor

Builder for EngineDiscoveryRequestResolver.
Since
1.5

Field Summary

Modifier and TypeField and Description
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>>
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>>

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addClassContainerSelectorResolver
(Predicate<Class<?>>
predicate the resolved classes must satisfy; never null
classFilter
)

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClassSelectors by scanning for classes that satisfy the supplied predicate in the respective class containers to this builder.

public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addClassContainerSelectorResolverWithContext
(Function<EngineDiscoveryRequestResolver.InitializationContext<T>, Predicate<Class<?>>>
the function that will be called to create the predicate the resolved classes must satisfy; never null
classFilterCreator
)

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClassSelectors by scanning for classes that satisfy the predicate created by the supplied Function in the respective class containers to this builder.

public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addResourceContainerSelectorResolver
(Predicate<Resource>
predicate the resolved classes must satisfy; never null
resourceFilter
)
Deprecated for removal since 1.14. Please use addResourceContainerSelectorResolver(ResourceFilter) instead.

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClasspathResourceSelectors by scanning for resources that satisfy the supplied predicate in the respective class containers to this builder.

public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addResourceContainerSelectorResolver
(ResourceFilter
filter the resolved classes must match; never null
resourceFilter
)

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClasspathResourceSelectors by scanning for resources that match the supplied resource filter in the respective class containers to this builder.

public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addSelectorResolver
(SelectorResolver
the resolver to add; never null
resolver
)

Add a context insensitive SelectorResolver to this builder.

public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addSelectorResolver
(Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>
the function that will be called to create the SelectorResolver to be added.
resolverCreator
)

Add a context sensitive SelectorResolver to this builder.

public EngineDiscoveryRequestResolver.Builder<T>

Returns:

this builder for method chaining
addTestDescriptorVisitor
(Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>
the function that will be called to create the TestDescriptor.Visitor to be added.
visitorCreator
)

Add a context sensitive TestDescriptor.Visitor to this builder.

public EngineDiscoveryRequestResolver<T>
build()

Build the EngineDiscoveryRequestResolver that has been configured via this builder.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

resolverCreatorsback to summary
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>> resolverCreators
visitorCreatorsback to summary
private final List<Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>> visitorCreators

Constructor Detail

Builderback to summary
private Builder()

Method Detail

addClassContainerSelectorResolverback to summary
public EngineDiscoveryRequestResolver.Builder<T> addClassContainerSelectorResolver(Predicate<Class<?>> classFilter)

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClassSelectors by scanning for classes that satisfy the supplied predicate in the respective class containers to this builder.

Parameters
classFilter:Predicate<Class<?>>

predicate the resolved classes must satisfy; never null

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

addClassContainerSelectorResolverWithContextback to summary
public EngineDiscoveryRequestResolver.Builder<T> addClassContainerSelectorResolverWithContext(Function<EngineDiscoveryRequestResolver.InitializationContext<T>, Predicate<Class<?>>> classFilterCreator)

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClassSelectors by scanning for classes that satisfy the predicate created by the supplied Function in the respective class containers to this builder.

Parameters
classFilterCreator:Function<EngineDiscoveryRequestResolver.InitializationContext<T>, Predicate<Class<?>>>

the function that will be called to create the predicate the resolved classes must satisfy; never null

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

Annotations
@API
status:EXPERIMENTAL
since:6.0
addResourceContainerSelectorResolverback to summary
public EngineDiscoveryRequestResolver.Builder<T> addResourceContainerSelectorResolver(Predicate<Resource> resourceFilter)

Deprecated

for removal since 1.14.

Please use addResourceContainerSelectorResolver(ResourceFilter) instead.

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClasspathResourceSelectors by scanning for resources that satisfy the supplied predicate in the respective class containers to this builder.

Parameters
resourceFilter:Predicate<Resource>

predicate the resolved classes must satisfy; never null

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

Annotations
@API
status:DEPRECATED
since:1.14
@Deprecated
since:1.14
forRemoval:true
@SuppressWarnings:removal
Since
1.12
addResourceContainerSelectorResolverback to summary
public EngineDiscoveryRequestResolver.Builder<T> addResourceContainerSelectorResolver(ResourceFilter resourceFilter)

Add a predefined resolver that resolves ClasspathRootSelectors, ModuleSelectors, and PackageSelectors into ClasspathResourceSelectors by scanning for resources that match the supplied resource filter in the respective class containers to this builder.

Parameters
resourceFilter:ResourceFilter

filter the resolved classes must match; never null

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

Annotations
@API
status:MAINTAINED
since:1.14
Since
1.14
addSelectorResolverback to summary
public EngineDiscoveryRequestResolver.Builder<T> addSelectorResolver(SelectorResolver resolver)

Add a context insensitive SelectorResolver to this builder.

Parameters
resolver:SelectorResolver

the resolver to add; never null

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

addSelectorResolverback to summary
public EngineDiscoveryRequestResolver.Builder<T> addSelectorResolver(Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver> resolverCreator)

Add a context sensitive SelectorResolver to this builder.

Parameters
resolverCreator:Function<EngineDiscoveryRequestResolver.InitializationContext<T>, SelectorResolver>

the function that will be called to create the SelectorResolver to be added.

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

See Also
InitializationContext
addTestDescriptorVisitorback to summary
public EngineDiscoveryRequestResolver.Builder<T> addTestDescriptorVisitor(Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor> visitorCreator)

Add a context sensitive TestDescriptor.Visitor to this builder.

If multiple visitors are registered, they will iterate over the test tree separately. To avoid the overhead of multiple iterations, consider combining multiple visitors into a single visitor using TestDescriptor.Visitor#composite(TestDescriptor.Visitor...).

Parameters
visitorCreator:Function<EngineDiscoveryRequestResolver.InitializationContext<T>, TestDescriptor.Visitor>

the function that will be called to create the TestDescriptor.Visitor to be added.

Returns:EngineDiscoveryRequestResolver.Builder<T>

this builder for method chaining

See Also
InitializationContext
buildback to summary
public EngineDiscoveryRequestResolver<T> build()

Build the EngineDiscoveryRequestResolver that has been configured via this builder.

org.junit.platform.engine.support.discovery back to summary

private Class EngineDiscoveryRequestResolver.DefaultInitializationContext<T extends TestDescriptor>

extends Object
implements EngineDiscoveryRequestResolver.InitializationContext<T extends TestDescriptor>
Class Inheritance
  • java.lang.Object
  • org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.DefaultInitializationContext
All Implemented Interfaces
org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext

Field Summary

Modifier and TypeField and Description
private final Predicate<String>
private final T
private final DiscoveryIssueReporter
private final Predicate<String>
private final EngineDiscoveryRequest

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
private Predicate<String>
buildClassNamePredicate(EngineDiscoveryRequest
the request to build a predicate from
request
)

Build a Predicate for fully qualified class names to be used for classpath scanning from an EngineDiscoveryRequest.

private Predicate<String>
public Predicate<String>
public EngineDiscoveryRequest
public T
public DiscoveryIssueReporter
public Predicate<String>
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

classNameFilterback to summary
private final Predicate<String> classNameFilter
engineDescriptorback to summary
private final T engineDescriptor
issueReporterback to summary
private final DiscoveryIssueReporter issueReporter
packageFilterback to summary
private final Predicate<String> packageFilter
requestback to summary
private final EngineDiscoveryRequest request

Constructor Detail

DefaultInitializationContextback to summary
pack-priv DefaultInitializationContext(EngineDiscoveryRequest request, T engineDescriptor, DiscoveryIssueReporter issueReporter)

Method Detail

buildClassNamePredicateback to summary
private Predicate<String> buildClassNamePredicate(EngineDiscoveryRequest request)

Build a Predicate for fully qualified class names to be used for classpath scanning from an EngineDiscoveryRequest.

Parameters
request:EngineDiscoveryRequest

the request to build a predicate from

buildPackagePredicateback to summary
private Predicate<String> buildPackagePredicate(EngineDiscoveryRequest request)
getClassNameFilterback to summary
public Predicate<String> getClassNameFilter()

Implements org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getClassNameFilter.

Doc from org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getClassNameFilter.

Get the class name filter built from the ClassNameFilters and PackageNameFilters in the EngineDiscoveryRequest that is about to be resolved.

Annotations
@Override
getDiscoveryRequestback to summary
public EngineDiscoveryRequest getDiscoveryRequest()

Implements org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getDiscoveryRequest.

Doc from org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getDiscoveryRequest.

Get the EngineDiscoveryRequest that is about to be resolved.

Annotations
@Override
getEngineDescriptorback to summary
public T getEngineDescriptor()

Implements org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getEngineDescriptor.

Doc from org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getEngineDescriptor.

Get the engine's TestDescriptor that will be used to collect the results.

Annotations
@Override
getIssueReporterback to summary
public DiscoveryIssueReporter getIssueReporter()

Implements org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getIssueReporter.

Doc from org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getIssueReporter.

Returns the DiscoveryIssueReporter for the current resolution.

Annotations
@Override
getPackageFilterback to summary
public Predicate<String> getPackageFilter()

Implements org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getPackageFilter.

Doc from org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.InitializationContext.getPackageFilter.

Get the package name filter built from the PackageNameFilters in the EngineDiscoveryRequest that is about to be resolved.

Annotations
@Override
org.junit.platform.engine.support.discovery back to summary

public Interface EngineDiscoveryRequestResolver.InitializationContext<T extends TestDescriptor>

Known Direct Implementers
org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.DefaultInitializationContext
Annotations
@API
status:STABLE
since:1.10

The initialization context for creating resolvers and visitors that depend on the EngineDiscoveryRequest to be resolved or the engine descriptor that will be used to collect the results.
Since
1.5
See Also
Builder#addSelectorResolver(Function), Builder#addTestDescriptorVisitor(Function)

Method Summary

Modifier and TypeMethod and Description
public Predicate<String>

Returns:

the predicate for filtering the resolved class names; never null
getClassNameFilter
()

Get the class name filter built from the ClassNameFilters and PackageNameFilters in the EngineDiscoveryRequest that is about to be resolved.

public EngineDiscoveryRequest

Returns:

the EngineDiscoveryRequest; never null
getDiscoveryRequest
()

Get the EngineDiscoveryRequest that is about to be resolved.

public T

Returns:

engine's TestDescriptor; never null
getEngineDescriptor
()

Get the engine's TestDescriptor that will be used to collect the results.

public DiscoveryIssueReporter

Returns:

the DiscoveryIssueReporter for the current resolution
getIssueReporter
()

Returns the DiscoveryIssueReporter for the current resolution.

public Predicate<String>

Returns:

the predicate for filtering the resolved resource names; never null
getPackageFilter
()

Get the package name filter built from the PackageNameFilters in the EngineDiscoveryRequest that is about to be resolved.

Method Detail

getClassNameFilterback to summary
public Predicate<String> getClassNameFilter()

Get the class name filter built from the ClassNameFilters and PackageNameFilters in the EngineDiscoveryRequest that is about to be resolved.

Returns:Predicate<String>

the predicate for filtering the resolved class names; never null

getDiscoveryRequestback to summary
public EngineDiscoveryRequest getDiscoveryRequest()

Get the EngineDiscoveryRequest that is about to be resolved.

Returns:EngineDiscoveryRequest

the EngineDiscoveryRequest; never null

getEngineDescriptorback to summary
public T getEngineDescriptor()

Get the engine's TestDescriptor that will be used to collect the results.

Returns:T

engine's TestDescriptor; never null

getIssueReporterback to summary
public DiscoveryIssueReporter getIssueReporter()

Returns the DiscoveryIssueReporter for the current resolution.

Returns:DiscoveryIssueReporter

the DiscoveryIssueReporter for the current resolution

Annotations
@API
status:EXPERIMENTAL
since:6.0
Since
1.13
getPackageFilterback to summary
public Predicate<String> getPackageFilter()

Get the package name filter built from the PackageNameFilters in the EngineDiscoveryRequest that is about to be resolved.

Returns:Predicate<String>

the predicate for filtering the resolved resource names; never null

Annotations
@API
status:MAINTAINED
since:1.13.3
Since
1.12