diff --git a/slf4j-jdk-platform-logging/pom.xml b/slf4j-jdk-platform-logging/pom.xml
index 92ceeecb..650310c8 100644
--- a/slf4j-jdk-platform-logging/pom.xml
+++ b/slf4j-jdk-platform-logging/pom.xml
@@ -23,6 +23,19 @@
org.slf4j
slf4j-api
+
+
+ org.slf4j
+ slf4j-simple
+ 2.0.0-alpha0
+ test
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
diff --git a/slf4j-jdk-platform-logging/src/test/java/org/slf4j/jdk/SLF4JSystemLoggerTest.java b/slf4j-jdk-platform-logging/src/test/java/org/slf4j/jdk/SLF4JSystemLoggerTest.java
new file mode 100644
index 00000000..a68cc175
--- /dev/null
+++ b/slf4j-jdk-platform-logging/src/test/java/org/slf4j/jdk/SLF4JSystemLoggerTest.java
@@ -0,0 +1,77 @@
+package org.slf4j.jdk;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.ServiceLoader;
+
+import static org.junit.Assert.*;
+
+public class SLF4JSystemLoggerTest {
+
+ private static final PrintStream ERROR_OUT = System.err;
+ private static final ByteArrayOutputStream OUTPUT = new ByteArrayOutputStream();
+ private static final PrintStream ERROR_OUT_REPLACEMENT = new PrintStream(OUTPUT);
+
+ @Before
+ public void setUp() {
+ System.setErr(ERROR_OUT_REPLACEMENT);
+ }
+
+ @After
+ public void tearDown() {
+ System.setErr(ERROR_OUT);
+ }
+
+ @Test
+ public void loggerFinderLoadedAsOnlyService() {
+ // this method asserts that there is exactly one `LoggerFinder` and its of the correct type
+ getSLF4JSystemLoggerFinder();
+ }
+
+ @Test
+ public void loggerFinderReturnsLogger() {
+ var logger = getSLF4JSystemLogger();
+ assertNotNull("LoggerFinder must return logger", logger);
+ }
+
+ @Test
+ public void loggerLogsMessage() {
+ var logger = getSLF4JSystemLogger();
+ var message = "Test system logging!";
+ logger.log(System.Logger.Level.INFO, message);
+
+ String output = getOutput();
+
+ assertTrue("Captured output should contain logged message.", output.contains(message));
+ }
+
+ private static System.LoggerFinder getSLF4JSystemLoggerFinder() {
+ var loggerFinders = new ArrayList();
+ // this fails when test is executed from the module path
+ // because the module declaration does not declare
+ // `uses System.LoggerFinder`
+ ServiceLoader.load(System.LoggerFinder.class).forEach(loggerFinders::add);
+ assertEquals("There should be exactly one `LoggerFinder`.", 1, loggerFinders.size());
+ var loggerFinder = loggerFinders.get(0);
+ assertEquals("The `LoggerFinder` should be of type `SLF4JSystemLoggerFinder`.",
+ SLF4JSystemLoggerFinder.class,
+ loggerFinder.getClass());
+ return loggerFinder;
+ }
+
+ private static System.Logger getSLF4JSystemLogger() {
+ var loggerFinder = getSLF4JSystemLoggerFinder();
+ return loggerFinder.getLogger("TestLogger", SLF4JSystemLoggerTest.class.getModule());
+ }
+
+ private static String getOutput() {
+ ERROR_OUT_REPLACEMENT.flush();
+ return OUTPUT.toString();
+ }
+
+}