You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2020/09/15 18:57:55 UTC

[logging-log4j2] 02/10: Migrate more appender tests to JUnit 5

This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit e0d78a4494ad07edfdbbc38f321c21a66dc3d439
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 16:30:42 2020 -0500

    Migrate more appender tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../log4j/core/appender/InMemoryAppenderTest.java  |  15 +-
 .../core/appender/MemoryMappedFileManagerTest.java |  28 ++-
 .../core/appender/OutputStreamManagerTest.java     |  18 +-
 .../core/appender/RandomAccessFileManagerTest.java |  37 ++--
 .../core/appender/ReconfigureAppenderTest.java     |   6 +-
 .../core/appender/ScriptAppenderSelectorTest.java  |  87 +++-----
 .../core/appender/SocketAppenderBuilderTest.java   |   9 +-
 .../log4j/core/appender/TlsSyslogFrameTest.java    |  16 +-
 .../log4j/core/appender/WriterAppenderTest.java    | 224 +++++++++++----------
 9 files changed, 202 insertions(+), 238 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java
index 75d4929..fe0c359 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java
@@ -24,13 +24,10 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.test.appender.InMemoryAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class InMemoryAppenderTest {
 
     @Test
@@ -68,15 +65,15 @@ public class InMemoryAppenderTest {
                 .setMessage(new SimpleMessage("Test")) //
                 .build();
         app.start();
-        assertTrue("Appender did not start", app.isStarted());
+        assertTrue(app.isStarted(), "Appender did not start");
         app.append(event);
         app.append(event);
         final String msg = app.toString();
-        assertNotNull("No message", msg);
+        assertNotNull(msg, "No message");
         final String expectedHeader = header == null ? "" : header;
         final String expected = expectedHeader + "Test" + Strings.LINE_SEPARATOR + "Test" + Strings.LINE_SEPARATOR;
-        assertTrue("Incorrect message: " + msg, msg.equals(expected));
+        assertEquals(expected, msg, "Incorrect message: " + msg);
         app.stop();
-        assertFalse("Appender did not stop", app.isStarted());
+        assertFalse(app.isStarted(), "Appender did not stop");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
index 84f7a4e..e5bb0d2 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
@@ -16,17 +16,16 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the MemoryMappedFileManager class.
@@ -35,12 +34,13 @@ import org.junit.Test;
  */
 public class MemoryMappedFileManagerTest {
 
+    @TempDir
+    File tempDir;
+
     @Test
     public void testRemapAfterInitialMapSizeExceeded() throws IOException {
         final int mapSize = 64; // very small, on purpose
-        final File file = File.createTempFile("log4j2", "test");
-        file.deleteOnExit();
-        assertEquals(0, file.length());
+        final File file = new File(tempDir, "memory-mapped-file.bin");
 
         final boolean append = false;
         final boolean immediateFlush = false;
@@ -57,8 +57,8 @@ public class MemoryMappedFileManagerTest {
         try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
             String line = reader.readLine();
             for (int i = 0; i < 1000; i++) {
-                assertNotNull("line", line);
-                assertTrue("line incorrect", line.contains("Message " + i));
+                assertNotNull(line, "line");
+                assertTrue(line.contains("Message " + i), "line incorrect");
                 line = reader.readLine();
             }
         }
@@ -66,9 +66,7 @@ public class MemoryMappedFileManagerTest {
 
     @Test
     public void testAppendDoesNotOverwriteExistingFile() throws IOException {
-        final File file = File.createTempFile("log4j2", "test");
-        file.deleteOnExit();
-        assertEquals(0, file.length());
+        final File file = new File(tempDir, "memory-mapped-file.bin");
 
         final int initialLength = 4 * 1024;
 
@@ -77,7 +75,7 @@ public class MemoryMappedFileManagerTest {
             fos.write(new byte[initialLength], 0, initialLength);
             fos.flush();
         }
-        assertEquals("all flushed to disk", initialLength, file.length());
+        assertEquals(initialLength, file.length(), "all flushed to disk");
 
         final boolean isAppend = true;
         final boolean immediateFlush = false;
@@ -86,6 +84,6 @@ public class MemoryMappedFileManagerTest {
             manager.writeBytes(new byte[initialLength], 0, initialLength);
         }
         final int expected = initialLength * 2;
-        assertEquals("appended, not overwritten", expected, file.length());
+        assertEquals(expected, file.length(), "appended, not overwritten");
     }
 }
\ No newline at end of file
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java
index 884d6b8..86d1990 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java
@@ -20,28 +20,24 @@ package org.apache.logging.log4j.core.appender;
 import java.util.List;
 
 import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.junit.LoggerContextSource;
 import org.apache.logging.log4j.status.StatusData;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * OutputStreamManager Tests.
  */
 public class OutputStreamManagerTest {
-    private static final String CONFIG = "multipleIncompatibleAppendersTest.xml";
-
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule(CONFIG);
 
     @Test
-    public void narrow() throws Exception {
-        final Logger logger = LogManager.getLogger(OutputStreamManagerTest.class);
+    @LoggerContextSource("multipleIncompatibleAppendersTest.xml")
+    public void narrow(final LoggerContext context) {
+        final Logger logger = context.getLogger(OutputStreamManagerTest.class);
         logger.info("test");
         final List<StatusData> statusData = StatusLogger.getLogger().getStatusData();
         StatusData data = statusData.get(0);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
index fac3171..62b2bec 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
@@ -23,19 +23,18 @@ import java.io.OutputStream;
 import java.io.RandomAccessFile;
 
 import org.apache.logging.log4j.core.util.NullOutputStream;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the RandomAccessFileManager class.
  */
 public class RandomAccessFileManagerTest {
 
-    @ClassRule
-    public static TemporaryFolder folder = new TemporaryFolder();
+    @TempDir
+    File tempDir;
 
     /**
      * Test method for
@@ -44,7 +43,7 @@ public class RandomAccessFileManagerTest {
      */
     @Test
     public void testWrite_multiplesOfBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
@@ -56,7 +55,8 @@ public class RandomAccessFileManagerTest {
 
             // all data is written if exceeds buffer size
             assertEquals(RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3, raf.length());
-        }}
+        }
+    }
 
     /**
      * Test method for
@@ -65,7 +65,7 @@ public class RandomAccessFileManagerTest {
      */
     @Test
     public void testWrite_dataExceedingBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
@@ -79,11 +79,12 @@ public class RandomAccessFileManagerTest {
 
             manager.flush();
             assertEquals(size, raf.length()); // all data written to file now
-        }}
+        }
+    }
 
     @Test
     public void testConfigurableBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final int bufferSize = 4 * 1024;
@@ -94,11 +95,12 @@ public class RandomAccessFileManagerTest {
 
             // check the resulting buffer size is what was requested
             assertEquals(bufferSize, manager.getBufferSize());
-        }}
+        }
+    }
 
     @Test
     public void testWrite_dataExceedingMinBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final int bufferSize = 1;
@@ -113,12 +115,13 @@ public class RandomAccessFileManagerTest {
 
             manager.flush();
             assertEquals(size, raf.length()); // all data written to file now
-        }}
+        }
+    }
 
     @Test
     public void testAppendDoesNotOverwriteExistingFile() throws IOException {
         final boolean isAppend = true;
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         assertEquals(0, file.length());
 
         final byte[] bytes = new byte[4 * 1024];
@@ -128,12 +131,12 @@ public class RandomAccessFileManagerTest {
             fos.write(bytes, 0, bytes.length);
             fos.flush();
         }
-        assertEquals("all flushed to disk", bytes.length, file.length());
+        assertEquals(bytes.length, file.length(), "all flushed to disk");
 
         final RandomAccessFileManager manager = RandomAccessFileManager.getFileManager(
                 file.getAbsolutePath(), isAppend, true, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, null);
         manager.write(bytes, 0, bytes.length, true);
         final int expected = bytes.length * 2;
-        assertEquals("appended, not overwritten", expected, file.length());
+        assertEquals(expected, file.length(), "appended, not overwritten");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java
index bbdf01d..6adc018 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java
@@ -32,12 +32,8 @@ import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFact
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.util.Builder;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-/**
- * Class Description goes here.
- * Created by rgoers on 2019-02-02
- */
 public class ReconfigureAppenderTest {
 	private RollingFileAppender appender;
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java
index fbea216..6b3800f 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java
@@ -16,79 +16,44 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.MarkerManager;
-import org.apache.logging.log4j.categories.Scripts;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.apache.logging.log4j.spi.ExtendedLogger;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasSize;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
-@RunWith(Parameterized.class)
-@Category(Scripts.Groovy.class)
 public class ScriptAppenderSelectorTest {
 
-    @Parameterized.Parameters(name = "{0}")
-    public static Object[][] getParameters() {
-        // @formatter:off
-        return new Object[][] {
-            { "log4j-appender-selector-groovy.xml" },
-            { "log4j-appender-selector-javascript.xml" },
-        };
-        // @formatter:on
-    }
-
-    @Rule
-    public final LoggerContextRule loggerContextRule;
-
-    public ScriptAppenderSelectorTest(final String configLocation) {
-        this.loggerContextRule = new LoggerContextRule(configLocation);
+    @Test
+    @LoggerContextSource("log4j-appender-selector-javascript.xml")
+    void testJavaScriptSelector(final Configuration config) {
+        verify(config);
     }
 
-    private ListAppender getListAppender() {
-        return loggerContextRule.getListAppender("SelectIt");
+    @Test
+    @LoggerContextSource("log4j-appender-selector-groovy.xml")
+    void testGroovySelector(final Configuration config) {
+        verify(config);
     }
 
-    private void logAndCheck() {
-        final Marker marker = MarkerManager.getMarker("HEXDUMP");
-        final Logger logger = loggerContextRule.getLogger(ScriptAppenderSelectorTest.class);
+    static void verify(final Configuration config) {
+        assertNull(config.getAppender("List1"), "List1 appender should not be initialized");
+        assertNull(config.getAppender("List2"), "List2 appender should not be initialized");
+        final ListAppender listAppender = config.getAppender("SelectIt");
+        assertNotNull(listAppender);
+        final ExtendedLogger logger = config.getLoggerContext().getLogger(ScriptAppenderSelectorTest.class);
         logger.error("Hello");
-        final ListAppender listAppender = getListAppender();
-        assertEquals("Incorrect number of events", 1, listAppender.getEvents().size());
+        assertThat(listAppender.getEvents(), hasSize(1));
         logger.error("World");
-        assertEquals("Incorrect number of events", 2, listAppender.getEvents().size());
-        logger.error(marker, "DEADBEEF");
-        assertEquals("Incorrect number of events", 3, listAppender.getEvents().size());
-    }
-
-    @Test(expected = AssertionError.class)
-    public void testAppender1Absence() {
-        loggerContextRule.getListAppender("List1");
-    }
-
-    @Test(expected = AssertionError.class)
-    public void testAppender2Absence() {
-        loggerContextRule.getListAppender("List2");
+        assertThat(listAppender.getEvents(), hasSize(2));
+        logger.error(MarkerManager.getMarker("HEXDUMP"), "DEADBEEF");
+        assertThat(listAppender.getEvents(), hasSize(3));
     }
 
-    @Test
-    public void testAppenderPresence() {
-        getListAppender();
-    }
-
-    @Test
-    public void testLogging1() {
-        logAndCheck();
-    }
-
-    @Test
-    public void testLogging2() {
-        logAndCheck();
-    }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java
index bdfd35a..3636af3 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import org.apache.logging.log4j.core.appender.SocketAppender;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class SocketAppenderBuilderTest {
 
@@ -27,6 +27,7 @@ public class SocketAppenderBuilderTest {
      */
     @Test
     public void testDefaultImmediateFlush() {
-        Assert.assertTrue(SocketAppender.newBuilder().isImmediateFlush());
+        assertTrue(SocketAppender.newBuilder().isImmediateFlush(),
+                "Regression of LOG4J2-1620: default value for immediateFlush should be true");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java
index 887ba99..a1df85a 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java
@@ -19,8 +19,10 @@ package org.apache.logging.log4j.core.appender;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.logging.log4j.util.Chars;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 
 public class TlsSyslogFrameTest {
     private static final String TEST_MESSAGE = "The quick brown fox jumps over the lazy dog";
@@ -29,16 +31,16 @@ public class TlsSyslogFrameTest {
     public void equals() {
         final TlsSyslogFrame first = new TlsSyslogFrame(TEST_MESSAGE);
         final TlsSyslogFrame second = new TlsSyslogFrame(TEST_MESSAGE);
-        Assert.assertEquals(first, second);
-        Assert.assertEquals(first.hashCode(), second.hashCode());
+        assertEquals(first, second);
+        assertEquals(first.hashCode(), second.hashCode());
     }
 
     @Test
     public void notEquals() {
         final TlsSyslogFrame first = new TlsSyslogFrame("A message");
         final TlsSyslogFrame second = new TlsSyslogFrame("B message");
-        Assert.assertNotEquals(first, second);
-        Assert.assertNotEquals(first.hashCode(), second.hashCode());
+        assertNotEquals(first, second);
+        assertNotEquals(first.hashCode(), second.hashCode());
     }
 
     @Test
@@ -46,6 +48,6 @@ public class TlsSyslogFrameTest {
         final TlsSyslogFrame frame = new TlsSyslogFrame(TEST_MESSAGE);
         final int length = TEST_MESSAGE.getBytes(StandardCharsets.UTF_8).length;
         final String expected = Integer.toString(length) + Chars.SPACE + TEST_MESSAGE;
-        Assert.assertEquals(expected, frame.toString());
+        assertEquals(expected, frame.toString());
     }
 }
\ No newline at end of file
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java
index dd4b8e0..392862e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java
@@ -1,109 +1,115 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.appender;
-
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayWriter;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.sql.SQLException;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
-
-/**
- * Tests {@link WriterAppender}.
- */
-public class WriterAppenderTest {
-
-    private static final String TEST_MSG = "FOO ERROR";
-
-    @Rule
-    public TestName testName = new TestName();
-
-    private String getName(final Writer writer) {
-        return writer.getClass().getSimpleName() + "." + testName.getMethodName();
-    }
-
-    private void test(final ByteArrayOutputStream out, final Writer writer) throws SQLException {
-        final String name = getName(writer);
-        addAppender(writer, name);
-        final Logger logger = LogManager.getLogger(name);
-        logger.error(TEST_MSG);
-        final String actual = out.toString();
-        Assert.assertTrue(actual, actual.contains(TEST_MSG));
-    }
-
-    private void test(final Writer writer) throws SQLException {
-        final String name = getName(writer);
-        addAppender(writer, name);
-        final Logger logger = LogManager.getLogger(name);
-        logger.error(TEST_MSG);
-        final String actual = writer.toString();
-        Assert.assertTrue(actual, actual.contains(TEST_MSG));
-    }
-
-    private void addAppender(final Writer writer, final String writerName) {
-        final LoggerContext context = LoggerContext.getContext(false);
-        final Configuration config = context.getConfiguration();
-        final PatternLayout layout = PatternLayout.createDefaultLayout(config);
-        final Appender appender = WriterAppender.createAppender(layout, null, writer, writerName, false, true);
-        appender.start();
-        config.addAppender(appender);
-        ConfigurationTestUtils.updateLoggers(appender, config);
-    }
-
-    @Test
-    public void testWriterAppenderToCharArrayWriter() throws SQLException {
-        test(new CharArrayWriter());
-    }
-
-    @Test
-    public void testWriterAppenderToOutputStreamWriter() throws SQLException {
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        final Writer writer = new OutputStreamWriter(out);
-        test(out, writer);
-    }
-
-    @Test
-    public void testWriterAppenderToPrintWriter() throws SQLException {
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        final Writer writer = new PrintWriter(out);
-        test(out, writer);
-    }
-
-    @Test
-    public void testWriterAppenderToStringWriter() throws SQLException {
-        test(new StringWriter());
-    }
-
-    @Test
-    public void testBuilder() {
-        // This should compile
-        WriterAppender.newBuilder().setTarget(new StringWriter()).setName("testWriterAppender").build();
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayWriter;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+
+/**
+ * Tests {@link WriterAppender}.
+ */
+public class WriterAppenderTest {
+
+    private static final String TEST_MSG = "FOO ERROR";
+
+    private String testMethodName;
+
+    @BeforeEach
+    void setUp(final TestInfo testInfo) {
+        testMethodName = testInfo.getTestMethod().map(Method::getName).orElseGet(testInfo::getDisplayName);
+    }
+
+    private String getName(final Writer writer) {
+        return writer.getClass().getSimpleName() + "." + testMethodName;
+    }
+
+    private void test(final ByteArrayOutputStream out, final Writer writer) {
+        final String name = getName(writer);
+        addAppender(writer, name);
+        final Logger logger = LogManager.getLogger(name);
+        logger.error(TEST_MSG);
+        final String actual = out.toString();
+        assertThat(actual, containsString(TEST_MSG));
+    }
+
+    private void test(final Writer writer) {
+        final String name = getName(writer);
+        addAppender(writer, name);
+        final Logger logger = LogManager.getLogger(name);
+        logger.error(TEST_MSG);
+        final String actual = writer.toString();
+        assertThat(actual, containsString(TEST_MSG));
+    }
+
+    private void addAppender(final Writer writer, final String writerName) {
+        final LoggerContext context = LoggerContext.getContext(false);
+        final Configuration config = context.getConfiguration();
+        final PatternLayout layout = PatternLayout.createDefaultLayout(config);
+        final Appender appender = WriterAppender.createAppender(layout, null, writer, writerName, false, true);
+        appender.start();
+        config.addAppender(appender);
+        ConfigurationTestUtils.updateLoggers(appender, config);
+    }
+
+    @Test
+    public void testWriterAppenderToCharArrayWriter() {
+        test(new CharArrayWriter());
+    }
+
+    @Test
+    public void testWriterAppenderToOutputStreamWriter() {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
+        final Writer writer = new OutputStreamWriter(out);
+        test(out, writer);
+    }
+
+    @Test
+    public void testWriterAppenderToPrintWriter() {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
+        final Writer writer = new PrintWriter(out);
+        test(out, writer);
+    }
+
+    @Test
+    public void testWriterAppenderToStringWriter() {
+        test(new StringWriter());
+    }
+
+    @Test
+    public void testBuilder() {
+        // This should compile
+        WriterAppender.newBuilder().setTarget(new StringWriter()).setName("testWriterAppender").build();
+    }
+}