diff --git a/testing-modules/junit-5-advanced/src/main/resources/logback.xml b/testing-modules/junit-5-advanced/src/main/resources/logback.xml
new file mode 100644
index 0000000000..7d900d8ea8
--- /dev/null
+++ b/testing-modules/junit-5-advanced/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java
new file mode 100644
index 0000000000..a92c44a85b
--- /dev/null
+++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java
@@ -0,0 +1,62 @@
+package com.baeldung.extensions.testwatcher;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.TestWatcher;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestResultLoggerExtension implements TestWatcher, AfterAllCallback {
+
+ private static final Logger LOG = LoggerFactory.getLogger(TestResultLoggerExtension.class);
+
+ private List testResultsStatus = new ArrayList<>();
+
+ private enum TestResultStatus {
+ SUCCESSFUL, ABORTED, FAILED, DISABLED;
+ }
+
+ @Override
+ public void testDisabled(ExtensionContext context, Optional reason) {
+ LOG.info("Test Disabled for test {}: with reason :- {}", context.getDisplayName(), reason.orElse("No reason"));
+
+ testResultsStatus.add(TestResultStatus.DISABLED);
+ }
+
+ @Override
+ public void testSuccessful(ExtensionContext context) {
+ LOG.info("Test Successful for test {}: ", context.getDisplayName());
+
+ testResultsStatus.add(TestResultStatus.SUCCESSFUL);
+ }
+
+ @Override
+ public void testAborted(ExtensionContext context, Throwable cause) {
+ LOG.info("Test Aborted for test {}: ", context.getDisplayName());
+
+ testResultsStatus.add(TestResultStatus.ABORTED);
+ }
+
+ @Override
+ public void testFailed(ExtensionContext context, Throwable cause) {
+ LOG.info("Test Aborted for test {}: ", context.getDisplayName());
+
+ testResultsStatus.add(TestResultStatus.FAILED);
+ }
+
+ @Override
+ public void afterAll(ExtensionContext context) throws Exception {
+ Map summary = testResultsStatus.stream()
+ .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
+
+ LOG.info("Test result summary for {} {}", context.getDisplayName(), summary.toString());
+ }
+
+}
diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestWatcherAPIUnitTest.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestWatcherAPIUnitTest.java
new file mode 100644
index 0000000000..89666cf9b8
--- /dev/null
+++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestWatcherAPIUnitTest.java
@@ -0,0 +1,36 @@
+package com.baeldung.extensions.testwatcher;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+import org.junit.Assert;
+import org.junit.jupiter.api.Assumptions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@ExtendWith(TestResultLoggerExtension.class)
+class TestWatcherAPIUnitTest {
+
+ @Test
+ void givenFalseIsTrue_whenTestAbortedThenCaptureResult() {
+ Assumptions.assumeTrue(false);
+ }
+
+ @Disabled
+ @Test
+ void givenTrueIsTrue_whenTestDisabledThenCaptureResult() {
+ Assert.assertTrue(true);
+ }
+
+ @Test
+ void givenTrueIsTrue_whenTestAbortedThenCaptureResult() {
+ Assumptions.assumeTrue(true);
+ }
+
+ @Disabled("This test is disabled")
+ @Test
+ void givenFailure_whenTestDisabledWithReason_ThenCaptureResult() {
+ fail("Not yet implemented");
+ }
+
+}