Interface TestExecutionListener
- All Known Subinterfaces:
DetailsPrintingListener
- All Known Implementing Classes:
FlatPrintingListener, LegacyXmlReportGeneratingListener, LoggingListener, OpenTestReportGeneratingListener, SummaryGeneratingListener, TestFeedPrintingListener, TreePrintingListener, UniqueIdTrackingListener, VerboseTreePrintingListener
Launcher
or LauncherExecutionRequest to be notified of events that occur
during test execution.
All methods in this interface have empty default implementations. Concrete implementations may therefore override one or more of these methods to be notified of the selected events.
All TestExecutionListener methods are called sequentially. Methods
for start events are called in registration order while methods for finish
events are called in reverse order. Test case execution won't start before
all executionStarted(TestIdentifier) calls have returned.
If an exception is thrown by an implementation of a method of this
interface, the exception will be caught and logged unless it is deemed
unrecoverable. In consequence, a
TestExecutionListener cannot cause test execution to fail or abort it
early by throwing an exception.
JUnit provides two example implementations.
Contrary to JUnit 4, test engines are supposed to report events not only for identifiers that represent executable leaves in the test plan but also for all intermediate containers. However, while both the JUnit Vintage and JUnit Jupiter engines comply with this contract, there is no way to guarantee this for third-party engines.
A TestExecutionListener can access
configuration
parameters via the getConfigurationParameters() method in the TestPlan supplied to
testPlanExecutionStarted(TestPlan) and
testPlanExecutionFinished(TestPlan).
Note on concurrency: testPlanExecutionStarted(TestPlan) and
testPlanExecutionFinished(TestPlan) are always called from the same
thread. It is safe to assume that there is at most one TestPlan
instance at a time. All other methods could be called from different threads
concurrently in case one or multiple test engines execute tests in parallel.
- Since:
- 1.0
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptiondefault voiddynamicTestRegistered(TestIdentifier testIdentifier) Called when a new, dynamicTestIdentifierhas been registered.default voidexecutionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) Called when the execution of a leaf or subtree of theTestPlanhas finished, regardless of the outcome.default voidexecutionSkipped(TestIdentifier testIdentifier, String reason) Called when the execution of a leaf or subtree of theTestPlanhas been skipped.default voidexecutionStarted(TestIdentifier testIdentifier) Called when the execution of a leaf or subtree of theTestPlanis about to be started.default voidfileEntryPublished(TestIdentifier testIdentifier, FileEntry file) Called when a file or directory has been published for the suppliedTestIdentifier.default voidreportingEntryPublished(TestIdentifier testIdentifier, ReportEntry entry) Called when additional test reporting data has been published for the suppliedTestIdentifier.default voidtestPlanExecutionFinished(TestPlan testPlan) Called when the execution of theTestPlanhas finished, after all tests have been executed.default voidtestPlanExecutionStarted(TestPlan testPlan) Called when the execution of theTestPlanhas started, before any test has been executed.
-
Method Details
-
testPlanExecutionStarted
Called when the execution of theTestPlanhas started, before any test has been executed.Called from the same thread as
testPlanExecutionFinished(TestPlan).- Parameters:
testPlan- describes the tree of tests about to be executed
-
testPlanExecutionFinished
Called when the execution of theTestPlanhas finished, after all tests have been executed.Called from the same thread as
testPlanExecutionStarted(TestPlan).- Parameters:
testPlan- describes the tree of tests that have been executed
-
dynamicTestRegistered
Called when a new, dynamicTestIdentifierhas been registered.A dynamic test is a test that is not known a-priori and therefore not contained in the original
TestPlan.- Parameters:
testIdentifier- the identifier of the newly registered test or container
-
executionSkipped
Called when the execution of a leaf or subtree of theTestPlanhas been skipped.The
TestIdentifiermay represent a test or a container. In the case of a container, no listener methods will be called for any of its descendants.A skipped test or subtree of tests will never be reported as started or finished.
- Parameters:
testIdentifier- the identifier of the skipped test or containerreason- a human-readable message describing why the execution has been skipped
-
executionStarted
Called when the execution of a leaf or subtree of theTestPlanis about to be started.The
TestIdentifiermay represent a test or a container.This method will only be called if the test or container has not been skipped.
This method will be called for a container
TestIdentifierbefore starting or skipping any of its children.- Parameters:
testIdentifier- the identifier of the started test or container
-
executionFinished
default void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) Called when the execution of a leaf or subtree of theTestPlanhas finished, regardless of the outcome.The
TestIdentifiermay represent a test or a container.This method will only be called if the test or container has not been skipped.
This method will be called for a container
TestIdentifierafter all of its children have been skipped or have finished.The
TestExecutionResultdescribes the result of the execution for the suppliedTestIdentifier. The result does not include or aggregate the results of its children. For example, a container with a failing test will be reported asSUCCESSFULeven if one or more of its children are reported asFAILED.- Parameters:
testIdentifier- the identifier of the finished test or containertestExecutionResult- the (unaggregated) result of the execution for the suppliedTestIdentifier- See Also:
-
reportingEntryPublished
Called when additional test reporting data has been published for the suppliedTestIdentifier.Can be called at any time during the execution of a test plan.
- Parameters:
testIdentifier- describes the test or container to which the entry pertainsentry- the publishedReportEntry
-
fileEntryPublished
@API(status=MAINTAINED, since="1.13.3") default void fileEntryPublished(TestIdentifier testIdentifier, FileEntry file) Called when a file or directory has been published for the suppliedTestIdentifier.Can be called at any time during the execution of a test plan.
- Parameters:
testIdentifier- describes the test or container to which the entry pertainsfile- the publishedFileEntry- Since:
- 1.12
-