in junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/NodeTestTask.java [158:185]
private void reportCompletion() {
if (throwableCollector.isEmpty() && skipResult.isSkipped()) {
try {
node.nodeSkipped(context, testDescriptor, skipResult);
}
catch (Throwable throwable) {
UnrecoverableExceptions.rethrowIfUnrecoverable(throwable);
logger.debug(throwable,
() -> String.format("Failed to invoke nodeSkipped() on Node %s", testDescriptor.getUniqueId()));
}
taskContext.getListener().executionSkipped(testDescriptor, skipResult.getReason().orElse("<unknown>"));
return;
}
if (!started) {
// Call executionStarted first to comply with the contract of EngineExecutionListener.
taskContext.getListener().executionStarted(testDescriptor);
}
try {
node.nodeFinished(context, testDescriptor, throwableCollector.toTestExecutionResult());
}
catch (Throwable throwable) {
UnrecoverableExceptions.rethrowIfUnrecoverable(throwable);
logger.debug(throwable,
() -> String.format("Failed to invoke nodeFinished() on Node %s", testDescriptor.getUniqueId()));
}
taskContext.getListener().executionFinished(testDescriptor, throwableCollector.toTestExecutionResult());
throwableCollector = null;
}