in surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java [106:164]
public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
boolean isClass = testIdentifier.isContainer()
&& testIdentifier
.getSource()
.filter(ClassSource.class::isInstance)
.isPresent();
boolean isTest = testIdentifier.isTest();
boolean failed = testExecutionResult.getStatus() == FAILED;
boolean isAssertionError = testExecutionResult
.getThrowable()
.filter(AssertionError.class::isInstance)
.isPresent();
boolean isRootContainer =
testIdentifier.isContainer() && !testIdentifier.getParentId().isPresent();
if (failed || isClass || isTest) {
Integer elapsed = computeElapsedTime(testIdentifier);
switch (testExecutionResult.getStatus()) {
case ABORTED:
if (isTest) {
runListener.testAssumptionFailure(
createReportEntry(testIdentifier, testExecutionResult, elapsed));
} else {
runListener.testSetCompleted(
createReportEntry(testIdentifier, testExecutionResult, systemProps(), null, elapsed));
}
break;
case FAILED:
String reason =
safeGetMessage(testExecutionResult.getThrowable().orElse(null));
SimpleReportEntry reportEntry =
createReportEntry(testIdentifier, testExecutionResult, reason, elapsed);
if (isAssertionError) {
runListener.testFailed(reportEntry);
} else {
runListener.testError(reportEntry);
}
if (isClass || isRootContainer) {
runListener.testSetCompleted(
createReportEntry(testIdentifier, null, systemProps(), null, elapsed));
}
failures.put(testIdentifier, testExecutionResult);
break;
default:
if (isTest) {
runListener.testSucceeded(createReportEntry(testIdentifier, null, elapsed));
} else {
runListener.testSetCompleted(
createReportEntry(testIdentifier, null, systemProps(), null, elapsed));
}
}
}
runningTestIdentifiersByUniqueId.remove(testIdentifier.getUniqueId());
}