HierarchicalTestEngine, JupiterTestEngine, VintageTestEngine@API(status=STABLE, since="1.0") public interface TestEngine
TestEngine facilitates discovery and execution of
tests for a particular programming model.
For example, JUnit provides a TestEngine that discovers and
executes tests written using the JUnit Jupiter programming model.
Every TestEngine must provide its own unique ID,
discover tests from
EngineDiscoveryRequests,
and execute those tests according to
ExecutionRequests.
In order to facilitate test discovery within IDEs and tools prior
to launching the JUnit Platform, TestEngine implementations are
encouraged to make use of the
@Testable annotation.
For example, the @Test and @TestFactory annotations in JUnit
Jupiter are meta-annotated with @Testable. Consult the Javadoc for
@Testable for further details.
EngineDiscoveryRequest,
ExecutionRequest,
Testable| Modifier and Type | Method | Description |
|---|---|---|
TestDescriptor |
discover(EngineDiscoveryRequest discoveryRequest,
UniqueId uniqueId) |
Discover tests according to the supplied
EngineDiscoveryRequest. |
void |
execute(ExecutionRequest request) |
Execute tests according to the supplied
ExecutionRequest. |
default java.util.Optional<java.lang.String> |
getArtifactId() |
Get the Artifact ID of the JAR in which this test engine is packaged.
|
default java.util.Optional<java.lang.String> |
getGroupId() |
Get the Group ID of the JAR in which this test engine is packaged.
|
java.lang.String |
getId() |
Get the ID that uniquely identifies this test engine.
|
default java.util.Optional<java.lang.String> |
getVersion() |
Get the version of this test engine.
|
java.lang.String getId()
Each test engine must provide a unique ID. For example, JUnit Vintage
and JUnit Jupiter use "junit-vintage" and "junit-jupiter",
respectively. When in doubt, you may use the fully qualified name of your
custom TestEngine implementation class.
TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId uniqueId)
EngineDiscoveryRequest.
The supplied UniqueId must be used as the unique ID of the
returned root TestDescriptor. In addition, the UniqueId
must be used to create unique IDs for children of the root's descriptor
by calling UniqueId.append(java.lang.String, java.lang.String).
discoveryRequest - the discovery request; never nulluniqueId - the unique ID to be used for this test engine's
TestDescriptor; never nullTestDescriptor of this engine, typically an
instance of EngineDescriptorEngineDescriptorvoid execute(ExecutionRequest request)
ExecutionRequest.
The request passed to this method contains the root
TestDescriptor that was previously returned by discover(org.junit.platform.engine.EngineDiscoveryRequest, org.junit.platform.engine.UniqueId),
the EngineExecutionListener to be notified of test execution
events, and ConfigurationParameters that may influence test execution.
request - the request to execute tests for; never nulldefault java.util.Optional<java.lang.String> getGroupId()
This information is used solely for debugging and reporting purposes.
The default implementation simply returns an empty Optional,
signaling that the group ID is unknown.
Concrete test engine implementations may override this method in order to provide a known group ID.
Optional containing the group ID; never null
but potentially empty if the group ID is unknowngetArtifactId(),
getVersion()default java.util.Optional<java.lang.String> getArtifactId()
This information is used solely for debugging and reporting purposes.
The default implementation assumes the implementation title is equivalent
to the artifact ID and therefore attempts to query the
implementation title
from the package attributes for the Package in which the engine
resides. Note that a package only has attributes if the information is
defined in the Manifest of the JAR
containing that package, and if the class loader created the
Package instance with the attributes from the manifest.
If the implementation title cannot be queried from the package
attributes, the default implementation simply returns an empty
Optional.
Concrete test engine implementations may override this method in order to determine the artifact ID by some other means.
Optional containing the artifact ID; never
null but potentially empty if the artifact ID is unknownClass.getPackage(),
Package.getImplementationTitle(),
getGroupId(),
getVersion()default java.util.Optional<java.lang.String> getVersion()
This information is used solely for debugging and reporting purposes.
Initially, the default implementation tries to retrieve the engine
version from the manifest attribute named: "Engine-Version-" + getId()
Then the default implementation attempts to query the
implementation version
from the package attributes for the Package in which the engine
resides. Note that a package only has attributes if the information is
defined in the Manifest of the JAR
containing that package, and if the class loader created the
Package instance with the attributes from the manifest.
If the implementation version cannot be queried from the package
attributes, the default implementation returns "DEVELOPMENT".
Concrete test engine implementations may override this method to determine the version by some other means.
implNote: Since JUnit Platform version 1.1 this default implementation honors the "raw version" information stored in the module (modular jar on the module-path) of this test engine.
Optional containing the version; never null
but potentially empty if the version is unknownClass.getPackage(),
Package.getImplementationVersion(),
getGroupId(),
getArtifactId()