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


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 1779fbe  [LOG4J2-2653] Migrate pattern tests to JUnit 5
1779fbe is described below

commit 1779fbedd6c7c1461010aa85a62effe98a5b83ce
Author: Matt Sicker <[email protected]>
AuthorDate: Sun Aug 23 16:33:30 2020 -0500

    [LOG4J2-2653] Migrate pattern tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <[email protected]>
---
 .../logging/log4j/core/LogEventFactoryTest.java    |  2 +-
 .../log4j/core/pattern/CallerInformationTest.java  | 29 ++++-----
 .../log4j/core/pattern/DisableAnsiTest.java        | 28 ++++----
 .../core/pattern/EncodingPatternConverterTest.java | 17 ++---
 .../pattern/EndOfBatchPatternConverterTest.java    |  4 +-
 .../EqualsIgnoreCaseReplacementConverterTest.java  | 10 ++-
 .../pattern/EqualsReplacementConverterTest.java    |  9 ++-
 .../ExtendedThrowablePatternConverterTest.java     | 28 ++++----
 .../log4j/core/pattern/ExtendedThrowableTest.java  | 30 ++++-----
 .../log4j/core/pattern/FormattingInfoTest.java     |  4 +-
 .../log4j/core/pattern/HighlightConverterTest.java | 38 +++++------
 .../core/pattern/LevelPatternConverterTest.java    |  7 +-
 .../core/pattern/LiteralPatternConverterTest.java  |  4 +-
 .../pattern/LoggerFqcnPatternConverterTest.java    |  4 +-
 .../core/pattern/MapPatternConverterTest.java      | 19 +++---
 .../core/pattern/MarkerPatternConverterTest.java   |  4 +-
 .../MarkerSimpleNamePatternConverterTest.java      |  6 +-
 .../log4j/core/pattern/MaxLengthConverterTest.java | 16 ++---
 .../core/pattern/MdcPatternConverterTest.java      | 36 ++++++-----
 .../core/pattern/MessageJansiConverterTest.java    | 32 ++++------
 .../core/pattern/MessagePatternConverterTest.java  | 52 +++++++--------
 .../core/pattern/MessageStyledConverterTest.java   | 32 ++++------
 .../core/pattern/NanoTimePatternConverterTest.java |  7 +-
 .../core/pattern/NdcPatternConverterTest.java      | 24 +++++--
 .../log4j/core/pattern/NoConsoleNoAnsiTest.java    | 34 +++++-----
 .../log4j/core/pattern/PatternParserTest.java      | 47 ++++++--------
 .../log4j/core/pattern/PatternParserTest2.java     |  7 +-
 .../pattern/ProcessIdPatternConverterTest.java     |  9 +--
 .../pattern/RegexReplacementConverterTest.java     |  8 +--
 .../log4j/core/pattern/RegexReplacementTest.java   | 74 +++++++++++-----------
 .../pattern/RootThrowablePatternConverterTest.java | 28 ++++----
 .../log4j/core/pattern/RootThrowableTest.java      | 36 ++++-------
 .../SequenceNumberPatternConverterTest.java        | 28 ++++----
 ...quenceNumberPatternConverterZeroPaddedTest.java | 36 ++++-------
 .../log4j/core/pattern/StyleConverterTest.java     | 41 ++++--------
 .../core/pattern/ThreadIdPatternConverterTest.java |  7 +-
 .../pattern/ThreadNamePatternConverterTest.java    |  7 +-
 .../ThreadPriorityPatternConverterTest.java        |  7 +-
 .../pattern/ThrowablePatternConverterTest.java     | 32 +++++-----
 .../logging/log4j/core/pattern/ThrowableTest.java  | 32 +++++-----
 .../VariablesNotEmptyReplacementConverterTest.java | 10 ++-
 .../logging/log4j/core/util/ClockFactoryTest.java  |  2 +-
 42 files changed, 396 insertions(+), 491 deletions(-)

diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventFactoryTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventFactoryTest.java
index e3a5adb..6ac57cd 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventFactoryTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventFactoryTest.java
@@ -68,7 +68,7 @@ public class LogEventFactoryTest {
 
         private void resetLogEventFactory(final LogEventFactory 
logEventFactory) throws IllegalAccessException {
             final Field field = FieldUtils.getField(LoggerConfig.class, 
"LOG_EVENT_FACTORY", true);
-            FieldUtils.removeFinalModifier(field, true);
+            FieldUtils.removeFinalModifier(field);
             FieldUtils.writeStaticField(field, logEventFactory, false);
         }
     }).around(context);
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
index 835ab4e..a4e4b32 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
@@ -19,35 +19,34 @@ package org.apache.logging.log4j.core.pattern;
 import java.util.List;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-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.*;
 
+@LoggerContextSource("log4j2-calling-class.xml")
 public class CallerInformationTest {
 
-    @ClassRule
-    public static LoggerContextRule context = new 
LoggerContextRule("log4j2-calling-class.xml");
-
     @Test
-    public void testClassLogger() throws Exception {
-        final ListAppender app = context.getListAppender("Class").clear();
+    public void testClassLogger(final LoggerContext context, @Named("Class") 
final ListAppender app) {
+        app.clear();
         final Logger logger = context.getLogger("ClassLogger");
         logger.info("Ignored message contents.");
         logger.warn("Verifying the caller class is still correct.");
         logger.error("Hopefully nobody breaks me!");
         final List<String> messages = app.getMessages();
-        assertEquals("Incorrect number of messages.", 3, messages.size());
+        assertEquals(3, messages.size(), "Incorrect number of messages.");
         for (final String message : messages) {
-            assertEquals("Incorrect caller class name.", 
this.getClass().getName(), message);
+            assertEquals(this.getClass().getName(), message, "Incorrect caller 
class name.");
         }
     }
 
     @Test
-    public void testMethodLogger() throws Exception {
-        final ListAppender app = context.getListAppender("Method").clear();
+    public void testMethodLogger(final LoggerContext context, @Named("Method") 
final ListAppender app) {
+        app.clear();
         final Logger logger = context.getLogger("MethodLogger");
         logger.info("More messages.");
         logger.warn("CATASTROPHE INCOMING!");
@@ -55,9 +54,9 @@ public class CallerInformationTest {
         logger.fatal("brains~~~");
         logger.info("Itchy. Tasty.");
         final List<String> messages = app.getMessages();
-        assertEquals("Incorrect number of messages.", 5, messages.size());
+        assertEquals(5, messages.size(), "Incorrect number of messages.");
         for (final String message : messages) {
-            assertEquals("Incorrect caller method name.", "testMethodLogger", 
message);
+            assertEquals("testMethodLogger", message, "Incorrect caller method 
name.");
         }
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DisableAnsiTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DisableAnsiTest.java
index b841ea4..af10982 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DisableAnsiTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DisableAnsiTest.java
@@ -17,33 +17,32 @@
 package org.apache.logging.log4j.core.pattern;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
+@LoggerContextSource("log4j2-console-disableAnsi.xml")
 public class DisableAnsiTest {
 
     private static final String EXPECTED =
             "ERROR LoggerTest o.a.l.l.c.p.DisableAnsiTest 
org.apache.logging.log4j.core.pattern.DisableAnsiTest"
             + Strings.LINE_SEPARATOR;
 
-    @Rule
-    public LoggerContextRule init = new 
LoggerContextRule("log4j2-console-disableAnsi.xml");
-
     private Logger logger;
     private ListAppender app;
 
-    @Before
-    public void setUp() throws Exception {
-        this.logger = this.init.getLogger("LoggerTest");
-        this.app = this.init.getListAppender("List").clear();
+    @BeforeEach
+    public void setUp(final LoggerContext context, @Named("List") final 
ListAppender app) {
+        this.logger = context.getLogger("LoggerTest");
+        this.app = app.clear();
     }
 
     @Test
@@ -52,8 +51,9 @@ public class DisableAnsiTest {
 
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("Replacement failed - expected ending " + EXPECTED + ", 
actual " + msgs.get(0), msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(msgs.get(0).endsWith(EXPECTED),
+                "Replacement failed - expected ending " + EXPECTED + ", actual 
" + msgs.get(0));
     }
 
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
index a6733c1..851c5ba 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
@@ -21,13 +21,10 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class EncodingPatternConverterTest {
 
     @Test
@@ -42,7 +39,7 @@ public class EncodingPatternConverterTest {
         final String[] options = new String[]{"%msg"};
         final EncodingPatternConverter converter = EncodingPatternConverter
             .newInstance(ctx.getConfiguration(), options);
-        assertNotNull("Error creating converter", converter);
+        assertNotNull(converter, "Error creating converter");
         converter.format(event, sb);
         assertEquals(
             "Test \\r\\n&lt;div 
class=&quot;test&quot;&gt;this&lt;&#x2F;div&gt; &amp; &lt;div 
class=&apos;test&apos;&gt;that&lt;&#x2F;div&gt;",
@@ -50,7 +47,7 @@ public class EncodingPatternConverterTest {
     }
 
     @Test
-    public void testJsonEscaping() throws Exception {
+    public void testJsonEscaping() {
         final LogEvent event = Log4jLogEvent.newBuilder()
             .setLoggerName(getClass().getName())
             .setLevel(Level.DEBUG)
@@ -62,7 +59,7 @@ public class EncodingPatternConverterTest {
         final String[] options = new String[]{"%msg", "JSON"};
         final EncodingPatternConverter converter = 
EncodingPatternConverter.newInstance(ctx.getConfiguration(), options);
 
-        assertNotNull("Error creating converter", converter);
+        assertNotNull(converter, "Error creating converter");
         converter.format(event, sb);
 
         assertEquals(expected, sb.toString());
@@ -80,7 +77,7 @@ public class EncodingPatternConverterTest {
         final String[] options = new String[]{"%msg", "CRLF"};
         final EncodingPatternConverter converter = EncodingPatternConverter
             .newInstance(ctx.getConfiguration(), options);
-        assertNotNull("Error creating converter", converter);
+        assertNotNull(converter, "Error creating converter");
         converter.format(event, sb);
         assertEquals(
             "Test \\r\\n<div class=\"test\">this\\r</div> & \\n<div 
class='test'>that</div>",
@@ -99,7 +96,7 @@ public class EncodingPatternConverterTest {
         final String[] options = new String[]{"%msg", "XML"};
         final EncodingPatternConverter converter = EncodingPatternConverter
             .newInstance(ctx.getConfiguration(), options);
-        assertNotNull("Error creating converter", converter);
+        assertNotNull(converter, "Error creating converter");
         converter.format(event, sb);
         assertEquals(
             "Test \r\n&lt;div class=&quot;test&quot;&gt;this&lt;/div&gt; &amp; 
&lt;div class=&apos;test&apos;&gt;that&lt;/div&gt;",
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EndOfBatchPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EndOfBatchPatternConverterTest.java
index 210b689..eda57d2 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EndOfBatchPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EndOfBatchPatternConverterTest.java
@@ -18,9 +18,9 @@ package org.apache.logging.log4j.core.pattern;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class EndOfBatchPatternConverterTest {
 
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverterTest.java
index ff03b72..fa4ae87 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverterTest.java
@@ -16,19 +16,16 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class EqualsIgnoreCaseReplacementConverterTest {
 
     @Test
@@ -57,6 +54,7 @@ public class EqualsIgnoreCaseReplacementConverterTest {
         final String[] options = new String[] { "aaa[" + tag + "]zzz", 
"AAA[]ZZZ", expectedValue };
         final EqualsIgnoreCaseReplacementConverter converter = 
EqualsIgnoreCaseReplacementConverter
                 .newInstance(ctx.getConfiguration(), options);
+        assertNotNull(converter);
         converter.format(event, sb);
         assertEquals(expectedValue, sb.toString());
     }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverterTest.java
index 2b7984a..35bee32 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverterTest.java
@@ -22,13 +22,10 @@ import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 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 EqualsReplacementConverterTest {
 
     private static final String TEST_MESSAGE = "This is a test";
@@ -68,6 +65,7 @@ public class EqualsReplacementConverterTest {
         final LoggerContext ctx = LoggerContext.getContext();
         final EqualsReplacementConverter converter = 
EqualsReplacementConverter.newInstance(ctx.getConfiguration(),
             options);
+        assertNotNull(converter);
         converter.format(event, sb);
         assertEquals(expectedValue, sb.toString());
     }
@@ -104,6 +102,7 @@ public class EqualsReplacementConverterTest {
             new String[]{"[%marker]", "[]", substitution});
 
         final StringBuilder sb = new StringBuilder();
+        assertNotNull(converter);
         converter.parseSubstitution(event, sb);
         final String actual = sb.toString();
         assertEquals(expected, actual);
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
index bcb9b1c..a204894 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
@@ -16,11 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.List;
@@ -33,11 +28,10 @@ import 
org.apache.logging.log4j.core.impl.ThrowableFormatOptions;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class ExtendedThrowablePatternConverterTest {
 
     @Test
@@ -57,7 +51,7 @@ public class ExtendedThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("No suffix", result.contains("test suffix"));
+        assertTrue(result.contains("test suffix"), "No suffix");
     }
 
     @Test
@@ -76,7 +70,7 @@ public class ExtendedThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("No suffix", result.contains("test suffix"));
+        assertTrue(result.contains("test suffix"), "No suffix");
     }
 
     @Test
@@ -95,7 +89,7 @@ public class ExtendedThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertFalse("Has unexpected suffix", result.contains("inner suffix"));
+        assertFalse(result.contains("inner suffix"), "Has unexpected suffix");
     }
 
     @Test
@@ -115,8 +109,8 @@ public class ExtendedThrowablePatternConverterTest {
                final StringBuilder sb = new StringBuilder();
                converter.format(event, sb);
                final String result = sb.toString();
-               assertTrue(result, 
result.contains(originalThrowable.getMessage()));
-               assertTrue(result, 
result.contains(originalThrowable.getStackTrace()[0].getMethodName()));
+               assertTrue(result.contains(originalThrowable.getMessage()), 
result);
+               
assertTrue(result.contains(originalThrowable.getStackTrace()[0].getMethodName()),
 result);
        }
 
     @Test
@@ -135,7 +129,7 @@ public class ExtendedThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("No suppressed lines", result.contains(" suppressed "));
+        assertTrue(result.contains(" suppressed "), "No suppressed lines");
     }
 
     @Test
@@ -168,8 +162,8 @@ public class ExtendedThrowablePatternConverterTest {
         final List<String> ignorePackages = options.getIgnorePackages();
         assertNotNull(ignorePackages);
         final String ignorePackagesString = ignorePackages.toString();
-        assertTrue(ignorePackagesString, ignorePackages.contains("org.junit"));
-        assertTrue(ignorePackagesString, 
ignorePackages.contains("org.eclipse"));
+        assertTrue(ignorePackages.contains("org.junit"), ignorePackagesString);
+        assertTrue(ignorePackages.contains("org.eclipse"), 
ignorePackagesString);
         assertEquals("|", options.getSeparator());
     }
 
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowableTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowableTest.java
index affeae4..bcb2919 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowableTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowableTest.java
@@ -19,37 +19,33 @@ package org.apache.logging.log4j.core.pattern;
 import java.util.List;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
+@LoggerContextSource("log4j-throwablefilter.xml")
 public class ExtendedThrowableTest {
     private ListAppender app;
 
-    @ClassRule
-    public static LoggerContextRule context = new 
LoggerContextRule("log4j-throwablefilter.xml");
-
-    @Before
-    public void setUp() throws Exception {
-        this.app = context.getListAppender("List").clear();
+    @BeforeEach
+    public void setUp(@Named("List") final ListAppender app) throws Exception {
+        this.app = app.clear();
     }
 
     @Test
-    public void testException() {
+    public void testException(final LoggerContext context) {
         final Logger logger = context.getLogger("LoggerTest");
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new 
IllegalArgumentException("IllegalArgument", cause);
         logger.error("Exception", parent);
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("No suppressed lines", msgs.get(0).contains("suppressed"));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(msgs.get(0).contains("suppressed"), "No suppressed lines");
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
index 370db65..3080240 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
+import org.junit.jupiter.api.Test;
 
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Testing FormattingInfo.
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/HighlightConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/HighlightConverterTest.java
index 40215a2..d03c09b 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/HighlightConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/HighlightConverterTest.java
@@ -19,11 +19,9 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the HighlightConverter.
@@ -34,6 +32,7 @@ public class HighlightConverterTest {
     public void testAnsiEmpty() {
         final String[] options = {"", PatternParser.NO_CONSOLE_NO_ANSI + 
"=false, " + PatternParser.DISABLE_ANSI + "=false"};
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
+        assertNotNull(converter);
 
         final LogEvent event = 
Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage(
                 new SimpleMessage("message in a bottle")).build();
@@ -46,6 +45,7 @@ public class HighlightConverterTest {
     public void testAnsiNonEmpty() {
         final String[] options = {"%-5level: %msg", 
PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + PatternParser.DISABLE_ANSI + 
"=false"};
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
+        assertNotNull(converter);
 
         final LogEvent event = 
Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage(
                 new SimpleMessage("message in a bottle")).build();
@@ -60,9 +60,9 @@ public class HighlightConverterTest {
         final String[] options = { "%-5level: %msg", 
PatternParser.NO_CONSOLE_NO_ANSI + "=false, "
                 + PatternParser.DISABLE_ANSI + "=false, " + "BAD_LEVEL_A=" + 
colorName + ", BAD_LEVEL_B=" + colorName };
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
-        Assert.assertNotNull(converter);
-        Assert.assertNotNull(converter.getLevelStyle(Level.TRACE));
-        Assert.assertNotNull(converter.getLevelStyle(Level.DEBUG));
+        assertNotNull(converter);
+        assertNotNull(converter.getLevelStyle(Level.TRACE));
+        assertNotNull(converter.getLevelStyle(Level.DEBUG));
     }
 
     @Test
@@ -71,9 +71,9 @@ public class HighlightConverterTest {
         final String[] options = { "%-5level: %msg", 
PatternParser.NO_CONSOLE_NO_ANSI + "=false, "
                 + PatternParser.DISABLE_ANSI + "=false, " + "DEBUG=" + 
colorName + ", TRACE=" + colorName };
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
-        Assert.assertNotNull(converter);
-        Assert.assertEquals(AnsiEscape.createSequence(colorName), 
converter.getLevelStyle(Level.TRACE));
-        Assert.assertEquals(AnsiEscape.createSequence(colorName), 
converter.getLevelStyle(Level.DEBUG));
+        assertNotNull(converter);
+        assertEquals(AnsiEscape.createSequence(colorName), 
converter.getLevelStyle(Level.TRACE));
+        assertEquals(AnsiEscape.createSequence(colorName), 
converter.getLevelStyle(Level.DEBUG));
     }
 
     @Test
@@ -82,11 +82,11 @@ public class HighlightConverterTest {
         final String[] options = { "%level", PatternParser.NO_CONSOLE_NO_ANSI 
+ "=false, " + PatternParser.DISABLE_ANSI
                 + "=false, " + "DEBUG=" + colorName + ", CUSTOM1=" + colorName 
};
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
-        Assert.assertNotNull(converter);
-        Assert.assertNotNull(converter.getLevelStyle(Level.INFO));
-        Assert.assertNotNull(converter.getLevelStyle(Level.DEBUG));
-        Assert.assertNotNull(converter.getLevelStyle(Level.forName("CUSTOM1", 
412)));
-        Assert.assertNull(converter.getLevelStyle(Level.forName("CUSTOM2", 
512)));
+        assertNotNull(converter);
+        assertNotNull(converter.getLevelStyle(Level.INFO));
+        assertNotNull(converter.getLevelStyle(Level.DEBUG));
+        assertNotNull(converter.getLevelStyle(Level.forName("CUSTOM1", 412)));
+        assertNull(converter.getLevelStyle(Level.forName("CUSTOM2", 512)));
 
         assertArrayEquals(new byte[] { 27, '[', '3', '4', 'm', 'D', 'E', 'B', 
'U', 'G', 27, '[', 'm' },
                 toFormattedCharSeq(converter, 
Level.DEBUG).toString().getBytes());
@@ -103,15 +103,16 @@ public class HighlightConverterTest {
         final String[] options = { "%-5level: %msg",
                 PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + 
PatternParser.DISABLE_ANSI + "=false" };
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
-        Assert.assertNotNull(converter);
-        Assert.assertNotNull(converter.getLevelStyle(Level.TRACE));
-        Assert.assertNotNull(converter.getLevelStyle(Level.DEBUG));
+        assertNotNull(converter);
+        assertNotNull(converter.getLevelStyle(Level.TRACE));
+        assertNotNull(converter.getLevelStyle(Level.DEBUG));
     }
 
     @Test
     public void testNoAnsiEmpty() {
         final String[] options = {"", PatternParser.DISABLE_ANSI + "=true"};
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
+        assertNotNull(converter);
 
         final LogEvent event = 
Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage(
                 new SimpleMessage("message in a bottle")).build();
@@ -124,6 +125,7 @@ public class HighlightConverterTest {
     public void testNoAnsiNonEmpty() {
         final String[] options = {"%-5level: %msg", PatternParser.DISABLE_ANSI 
+ "=true"};
         final HighlightConverter converter = 
HighlightConverter.newInstance(null, options);
+        assertNotNull(converter);
 
         final LogEvent event = 
Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage(
                 new SimpleMessage("message in a bottle")).build();
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
index 9d1d763..bde85e1 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
@@ -21,13 +21,10 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class LevelPatternConverterTest {
 
     private void testLevelLength(final int length, final String debug, final 
String warn) {
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverterTest.java
index 3b8835b..ff32807 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverterTest.java
@@ -17,9 +17,9 @@
 
 package org.apache.logging.log4j.core.pattern;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the LiteralPatternConverter.
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LoggerFqcnPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LoggerFqcnPatternConverterTest.java
index 2cb1faf..a87679d 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LoggerFqcnPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LoggerFqcnPatternConverterTest.java
@@ -18,9 +18,9 @@ package org.apache.logging.log4j.core.pattern;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class LoggerFqcnPatternConverterTest {
 
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
index a841b32..735e0ce 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
@@ -21,13 +21,10 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.MapMessage;
 import org.apache.logging.log4j.message.StringMapMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class MapPatternConverterTest {
 
     @Test
@@ -47,11 +44,11 @@ public class MapPatternConverterTest {
         converter.format(event, sb);
         final String str = sb.toString();
         String expected = "subject=I";
-        assertTrue("Missing or incorrect subject. Expected " + expected + ", 
actual " + str, str.contains(expected));
+        assertTrue(str.contains(expected), "Missing or incorrect subject. 
Expected " + expected + ", actual " + str);
         expected = "verb=love";
-        assertTrue("Missing or incorrect verb", str.contains(expected));
+        assertTrue(str.contains(expected), "Missing or incorrect verb");
         expected = "object=Log4j";
-        assertTrue("Missing or incorrect object", str.contains(expected));
+        assertTrue(str.contains(expected), "Missing or incorrect object");
 
         assertEquals("{object=Log4j, subject=I, verb=love}", str);
     }
@@ -93,11 +90,11 @@ public class MapPatternConverterTest {
         converter.format(event, sb);
         final String str = sb.toString();
         String expected = "subject=\"I\"";
-        assertTrue("Missing or incorrect subject. Expected " + expected + ", 
actual " + str, str.contains(expected));
+        assertTrue(str.contains(expected), "Missing or incorrect subject. 
Expected " + expected + ", actual " + str);
         expected = "verb=\"love\"";
-        assertTrue("Missing or incorrect verb", str.contains(expected));
+        assertTrue(str.contains(expected), "Missing or incorrect verb");
         expected = "object=\"Log4j\"";
-        assertTrue("Missing or incorrect object", str.contains(expected));
+        assertTrue(str.contains(expected), "Missing or incorrect object");
 
         assertEquals("{object=\"Log4j\", subject=\"I\", verb=\"love\"}", str);
     }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
index 26d68cb..da06f55 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
@@ -23,9 +23,9 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.StructuredDataMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests {@link MarkerPatternConverter}.
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java
index 1f90506..88bebcf 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.MarkerManager;
@@ -25,7 +23,9 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.StructuredDataMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests {@link MarkerSimpleNamePatternConverter}.
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
index e379915..a41a5fe 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
@@ -22,19 +22,16 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class MaxLengthConverterTest {
 
-    private static MaxLengthConverter converter = 
MaxLengthConverter.newInstance(null, new String[]{"%m", "10"});
+    private static final MaxLengthConverter converter = 
MaxLengthConverter.newInstance(null, new String[]{"%m", "10"});
 
     @Test
-    public void testUnderMaxLength() throws Exception {
+    public void testUnderMaxLength() {
         final Message message = new SimpleMessage("0123456789");
         final LogEvent event = Log4jLogEvent.newBuilder()
             .setLoggerName("MyLogger")
@@ -47,7 +44,7 @@ public class MaxLengthConverterTest {
     }
 
     @Test
-    public void testOverMaxLength() throws Exception {
+    public void testOverMaxLength() {
         final Message message = new SimpleMessage("01234567890123456789");
         final LogEvent event = Log4jLogEvent.newBuilder()
             .setLoggerName("MyLogger")
@@ -58,8 +55,9 @@ public class MaxLengthConverterTest {
         converter.format(event, sb);
         assertEquals("0123456789", sb.toString());
     }
+
     @Test
-    public void testOverMaxLength21WithEllipsis() throws Exception {
+    public void testOverMaxLength21WithEllipsis() {
         final Message message = new 
SimpleMessage("012345678901234567890123456789");
         final LogEvent event = Log4jLogEvent.newBuilder()
             .setLoggerName("MyLogger")
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MdcPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MdcPatternConverterTest.java
index 4cb6c7d..b984253 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MdcPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MdcPatternConverterTest.java
@@ -16,35 +16,36 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.ThreadContextHolder;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.junit.ThreadContextMapRule;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class MdcPatternConverterTest {
 
-    @Rule
-    public final ThreadContextMapRule threadContextRule = new 
ThreadContextMapRule();
+    private final ThreadContextHolder threadContextHolder = new 
ThreadContextHolder(true, false);
 
-    @Before
+    @BeforeEach
     public void setup() {
+        ThreadContext.clearMap();
         ThreadContext.put("subject", "I");
         ThreadContext.put("verb", "love");
         ThreadContext.put("object", "Log4j");
     }
 
+    @AfterEach
+    public void tearDown() {
+        threadContextHolder.restore();
+    }
+
     @Test
     public void testConverter() {
         final Message msg = new SimpleMessage("Hello");
@@ -58,7 +59,7 @@ public class MdcPatternConverterTest {
         converter.format(event, sb);
         final String str = sb.toString();
         final String expected = "{object=Log4j, subject=I, verb=love}";
-        assertTrue("Incorrect result. Expected " + expected + ", actual " + 
str, str.equals(expected));
+        assertEquals(expected, str, "Incorrect result. Expected " + expected + 
", actual " + str);
     }
 
     @Test
@@ -75,8 +76,9 @@ public class MdcPatternConverterTest {
         converter.format(event, sb);
         final String str = sb.toString();
         final String expected = "prefix {object=Log4j, subject=I, verb=love}";
-        assertTrue("Incorrect result. Expected " + expected + ", actual " + 
str, str.equals(expected));
+        assertEquals(expected, str, "Incorrect result. Expected " + expected + 
", actual " + str);
     }
+
     @Test
     public void testConverterFullEmpty() {
         ThreadContext.clearMap();
@@ -91,7 +93,7 @@ public class MdcPatternConverterTest {
         converter.format(event, sb);
         final String str = sb.toString();
         final String expected = "{}";
-        assertTrue("Incorrect result. Expected " + expected + ", actual " + 
str, str.equals(expected));
+        assertEquals(expected, str, "Incorrect result. Expected " + expected + 
", actual " + str);
     }
 
     @Test
@@ -109,7 +111,7 @@ public class MdcPatternConverterTest {
         converter.format(event, sb);
         final String str = sb.toString();
         final String expected = "{foo=bar}";
-        assertTrue("Incorrect result. Expected " + expected + ", actual " + 
str, str.equals(expected));
+        assertEquals(expected, str, "Incorrect result. Expected " + expected + 
", actual " + str);
     }
 
     @Test
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageJansiConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageJansiConverterTest.java
index 0134dac..56bdd48 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageJansiConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageJansiConverterTest.java
@@ -19,33 +19,29 @@ package org.apache.logging.log4j.core.pattern;
 import java.util.List;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
+@LoggerContextSource("log4j-message-ansi.xml")
 public class MessageJansiConverterTest {
 
     private static final String EXPECTED = "\u001B[31;1mWarning!\u001B[m Pants 
on \u001B[31mfire!\u001B[m"
             + Strings.LINE_SEPARATOR;
 
-    @Rule
-    public LoggerContextRule init = new 
LoggerContextRule("log4j-message-ansi.xml");
-
     private Logger logger;
     private ListAppender app;
 
-    @Before
-    public void setUp() throws Exception {
-        this.logger = this.init.getLogger("LoggerTest");
-        this.app = this.init.getListAppender("List").clear();
+    @BeforeEach
+    public void setUp(final LoggerContext context, @Named("List") final 
ListAppender app) {
+        this.logger = context.getLogger("LoggerTest");
+        this.app = app.clear();
     }
 
     @Test
@@ -55,8 +51,8 @@ public class MessageJansiConverterTest {
 
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("Replacement failed - expected ending " + EXPECTED + ", 
actual " + msgs.get(0),
-                msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(
+                msgs.get(0).endsWith(EXPECTED), "Replacement failed - expected 
ending " + EXPECTED + ", actual " + msgs.get(0));
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
index 577d26a..04aad5f 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
@@ -16,9 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -31,15 +28,14 @@ import 
org.apache.logging.log4j.message.ParameterizedMessage;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.message.StringMapMessage;
 import org.apache.logging.log4j.message.StructuredDataMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class MessagePatternConverterTest {
 
     @Test
-    public void testPattern() throws Exception {
+    public void testPattern() {
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(null, null);
         Message msg = new SimpleMessage("Hello!");
         LogEvent event = Log4jLogEvent.newBuilder() //
@@ -48,14 +44,14 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "Hello!", sb.toString());
+        assertEquals("Hello!", sb.toString(), "Unexpected result");
         event = Log4jLogEvent.newBuilder() //
                 .setLoggerName("MyLogger") //
                 .setLevel(Level.DEBUG) //
                 .setMessage(null).build();
         sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Incorrect length: " + sb, 0, sb.length());
+        assertEquals(0, sb.length(), "Incorrect length: " + sb);
         msg = new SimpleMessage(null);
         event = Log4jLogEvent.newBuilder() //
                 .setLoggerName("MyLogger") //
@@ -63,11 +59,11 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Incorrect length: " + sb, 4, sb.length());
+        assertEquals(4, sb.length(), "Incorrect length: " + sb);
     }
 
     @Test
-    public void testPatternAndParameterizedMessageDateLookup() throws 
Exception {
+    public void testPatternAndParameterizedMessageDateLookup() {
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(null, null);
         final Message msg = new ParameterizedMessage("${date:now:buhu}");
         final LogEvent event = Log4jLogEvent.newBuilder() //
@@ -76,12 +72,12 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "${date:now:buhu}", sb.toString());
+        assertEquals("${date:now:buhu}", sb.toString(), "Unexpected result");
     }
 
     @Test
     public void testLookupEnabledByDefault() {
-        assertFalse("Expected lookups to be enabled", 
Constants.FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS);
+        assertFalse(Constants.FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS, 
"Expected lookups to be enabled");
     }
 
     @Test
@@ -97,7 +93,7 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "bar", sb.toString());
+        assertEquals("bar", sb.toString(), "Unexpected result");
     }
 
     @Test
@@ -114,11 +110,11 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Expected the raw pattern string without lookup", 
"${foo}", sb.toString());
+        assertEquals("${foo}", sb.toString(), "Expected the raw pattern string 
without lookup");
     }
 
     @Test
-    public void testPatternWithConfiguration() throws Exception {
+    public void testPatternWithConfiguration() {
         final Configuration config = new DefaultConfiguration();
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(config, null);
         Message msg = new SimpleMessage("Hello!");
@@ -128,14 +124,14 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "Hello!", sb.toString());
+        assertEquals("Hello!", sb.toString(), "Unexpected result");
         event = Log4jLogEvent.newBuilder() //
                 .setLoggerName("MyLogger") //
                 .setLevel(Level.DEBUG) //
                 .setMessage(null).build();
         sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Incorrect length: " + sb, 0, sb.length());
+        assertEquals(0, sb.length(), "Incorrect length: " + sb);
         msg = new SimpleMessage(null);
         event = Log4jLogEvent.newBuilder() //
                 .setLoggerName("MyLogger") //
@@ -143,11 +139,11 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Incorrect length: " + sb, 4, sb.length());
+        assertEquals(4, sb.length(), "Incorrect length: " + sb);
     }
 
     @Test
-    public void testMapMessageFormatJson() throws Exception {
+    public void testMapMessageFormatJson() {
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(null, new String[]{"json"});
         final Message msg = new StringMapMessage()
                 .with("key", "val");
@@ -157,11 +153,11 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "{\"key\":\"val\"}", sb.toString());
+        assertEquals("{\"key\":\"val\"}", sb.toString(), "Unexpected result");
     }
 
     @Test
-    public void testMapMessageFormatXml() throws Exception {
+    public void testMapMessageFormatXml() {
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(null, new String[]{"xml"});
         final Message msg = new StringMapMessage()
                 .with("key", "val");
@@ -171,11 +167,11 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "<Map>\n  <Entry 
key=\"key\">val</Entry>\n</Map>", sb.toString());
+        assertEquals("<Map>\n  <Entry key=\"key\">val</Entry>\n</Map>", 
sb.toString(), "Unexpected result");
     }
 
     @Test
-    public void testMapMessageFormatDefault() throws Exception {
+    public void testMapMessageFormatDefault() {
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(null, null);
         final Message msg = new StringMapMessage()
                 .with("key", "val");
@@ -185,11 +181,11 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "key=\"val\"", sb.toString());
+        assertEquals("key=\"val\"", sb.toString(), "Unexpected result");
     }
 
     @Test
-    public void testStructuredDataFormatFull() throws Exception {
+    public void testStructuredDataFormatFull() {
         final MessagePatternConverter converter = 
MessagePatternConverter.newInstance(null, new String[]{"FULL"});
         final Message msg = new StructuredDataMessage("id", "message", "type")
                 .with("key", "val");
@@ -199,6 +195,6 @@ public class MessagePatternConverterTest {
                 .setMessage(msg).build();
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        assertEquals("Unexpected result", "type [id key=\"val\"] message", 
sb.toString());
+        assertEquals("type [id key=\"val\"] message", sb.toString(), 
"Unexpected result");
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageStyledConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageStyledConverterTest.java
index ade4432..b0ec9c8 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageStyledConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessageStyledConverterTest.java
@@ -19,33 +19,29 @@ package org.apache.logging.log4j.core.pattern;
 import java.util.List;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
+@LoggerContextSource("log4j-message-styled.xml")
 public class MessageStyledConverterTest {
 
     private static final String EXPECTED = "\u001B[31;1mWarning!\u001B[m Pants 
on \u001B[31;1mfire!\u001B[m"
             + Strings.LINE_SEPARATOR;
 
-    @Rule
-    public LoggerContextRule init = new 
LoggerContextRule("log4j-message-styled.xml");
-
     private Logger logger;
     private ListAppender app;
 
-    @Before
-    public void setUp() throws Exception {
-        this.logger = this.init.getLogger("LoggerTest");
-        this.app = this.init.getListAppender("List").clear();
+    @BeforeEach
+    public void setUp(final LoggerContext context, @Named("List") final 
ListAppender app) {
+        this.logger = context.getLogger("LoggerTest");
+        this.app = app.clear();
     }
 
     @Test
@@ -55,8 +51,8 @@ public class MessageStyledConverterTest {
 
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("Replacement failed - expected ending " + EXPECTED + ", 
actual " + msgs.get(0),
-                msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(
+                msgs.get(0).endsWith(EXPECTED), "Replacement failed - expected 
ending " + EXPECTED + ", actual " + msgs.get(0));
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverterTest.java
index f9598d2..c4a0238 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverterTest.java
@@ -18,13 +18,10 @@ package org.apache.logging.log4j.core.pattern;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class NanoTimePatternConverterTest {
 
     @Test
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NdcPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NdcPatternConverterTest.java
index 4088a17..4af2ad9 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NdcPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NdcPatternConverterTest.java
@@ -16,22 +16,32 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.ThreadContextHolder;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.junit.ThreadContextStackRule;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class NdcPatternConverterTest {
 
-    @Rule
-    public final ThreadContextStackRule threadContextRule = new 
ThreadContextStackRule();
+    private final ThreadContextHolder holder = new ThreadContextHolder(false, 
true);
+
+    @BeforeEach
+    void setUp() {
+        ThreadContext.clearStack();
+    }
+
+    @AfterEach
+    void tearDown() {
+        holder.restore();
+    }
 
     @Test
     public void testEmpty() {
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NoConsoleNoAnsiTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NoConsoleNoAnsiTest.java
index ee29c6f..69dd679 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NoConsoleNoAnsiTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NoConsoleNoAnsiTest.java
@@ -16,36 +16,33 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.util.List;
-
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import java.util.List;
 
+import static org.junit.jupiter.api.Assertions.*;
+
+@LoggerContextSource("log4j2-console-noConsoleNoAnsi.xml")
 public class NoConsoleNoAnsiTest {
 
     private static final String EXPECTED =
             "ERROR LoggerTest o.a.l.l.c.p.NoConsoleNoAnsiTest 
org.apache.logging.log4j.core.pattern.NoConsoleNoAnsiTest"
             + Strings.LINE_SEPARATOR;
 
-    @Rule
-    public LoggerContextRule init = new 
LoggerContextRule("log4j2-console-noConsoleNoAnsi.xml");
-
     private Logger logger;
     private ListAppender app;
 
-    @Before
-    public void setUp() throws Exception {
-        this.logger = this.init.getLogger("LoggerTest");
-        this.app = this.init.getListAppender("List").clear();
+    @BeforeEach
+    public void setUp(final LoggerContext context, @Named("List") final 
ListAppender app) {
+        this.logger = context.getLogger("LoggerTest");
+        this.app = app.clear();
     }
 
     @Test
@@ -54,8 +51,9 @@ public class NoConsoleNoAnsiTest {
 
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("Replacement failed - expected ending " + EXPECTED + ", 
actual " + msgs.get(0), msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(msgs.get(0).endsWith(EXPECTED),
+                "Replacement failed - expected ending " + EXPECTED + ", actual 
" + msgs.get(0));
     }
 
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index 445910b..b1dd31f 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -16,10 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.util.Calendar;
 import java.util.List;
 
@@ -38,12 +34,11 @@ import org.apache.logging.log4j.core.util.SystemNanoClock;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.StringMap;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class PatternParserTest {
 
     static String OUTPUT_FILE   = "output/PatternParser";
@@ -69,15 +64,15 @@ public class PatternParserTest {
     private static final String KEY = "Converter";
     private PatternParser parser;
 
-    @Before
+    @BeforeEach
     public void setup() {
         parser = new PatternParser(KEY);
     }
 
     private void validateConverter(final List<PatternFormatter> formatter, 
final int index, final String name) {
         final PatternConverter pc = formatter.get(index).getConverter();
-        assertEquals("Incorrect converter " + pc.getName() + " at index " + 
index + " expected " + name,
-            pc.getName(), name);
+        assertEquals(
+                pc.getName(), name, "Incorrect converter " + pc.getName() + " 
at index " + index + " expected " + name);
     }
 
     /**
@@ -87,7 +82,7 @@ public class PatternParserTest {
     public void defaultPattern() {
         final List<PatternFormatter> formatters = parser.parse(msgPattern);
         assertNotNull(formatters);
-        assertTrue(formatters.size() == 2);
+        assertEquals(formatters.size(), 2);
         validateConverter(formatters, 0, "Message");
         validateConverter(formatters, 1, "Line Sep");
     }
@@ -118,8 +113,8 @@ public class PatternParserTest {
             formatter.format(event, buf);
         }
         final String str = buf.toString();
-        final String expected = "INFO  [PatternParserTest        :104 ] - 
Hello, world" + Strings.LINE_SEPARATOR;
-        assertTrue("Expected to end with: " + expected + ". Actual: " + str, 
str.endsWith(expected));
+        final String expected = "INFO  [PatternParserTest        :99  ] - 
Hello, world" + Strings.LINE_SEPARATOR;
+        assertTrue(str.endsWith(expected), "Expected to end with: " + expected 
+ ". Actual: " + str);
     }
 
     @Test
@@ -140,7 +135,7 @@ public class PatternParserTest {
         }
         final String str = buf.toString();
         final String expected = "INFO  rTest Hello, world" + 
Strings.LINE_SEPARATOR;
-        assertTrue("Expected to end with: " + expected + ". Actual: " + str, 
str.endsWith(expected));
+        assertTrue(str.endsWith(expected), "Expected to end with: " + expected 
+ ". Actual: " + str);
     }
 
     @Test
@@ -161,7 +156,7 @@ public class PatternParserTest {
         }
         final String str = buf.toString();
         final String expected = "INFO  org.a Hello, world" + 
Strings.LINE_SEPARATOR;
-        assertTrue("Expected to end with: " + expected + ". Actual: " + str, 
str.endsWith(expected));
+        assertTrue(str.endsWith(expected), "Expected to end with: " + expected 
+ ". Actual: " + str);
     }
 
     @Test
@@ -192,7 +187,7 @@ public class PatternParserTest {
 
         // eats all characters until the closing '}' character
         final String expected = "[2001-02-03 04:05:06,789] - Hello, world";
-        assertTrue("Expected to start with: " + expected + ". Actual: " + str, 
str.startsWith(expected));
+        assertTrue(str.startsWith(expected), "Expected to start with: " + 
expected + ". Actual: " + str);
     }
 
     @Test
@@ -226,8 +221,8 @@ public class PatternParserTest {
         }
         final String str = buf.toString();
         final String expectedEnd = String.format("] %-5s: Hello, 
world%s\u001B[m", level, Strings.LINE_SEPARATOR);
-        assertTrue("Expected to start with: " + expectedStart + ". Actual: " + 
str, str.startsWith(expectedStart));
-        assertTrue("Expected to end with: \"" + expectedEnd + "\". Actual: \"" 
+ str, str.endsWith(expectedEnd));
+        assertTrue(str.startsWith(expectedStart), "Expected to start with: " + 
expectedStart + ". Actual: " + str);
+        assertTrue(str.endsWith(expectedEnd), "Expected to end with: \"" + 
expectedEnd + "\". Actual: \"" + str);
     }
 
     @Test
@@ -301,8 +296,8 @@ public class PatternParserTest {
         final List<PatternFormatter> formatters = parser.parse(pattern);
         assertNotNull(formatters);
         final String msg = formatters.toString();
-        assertEquals(msg, 1, formatters.size());
-        assertTrue(msg, 
checkClass.isInstance(formatters.get(0).getConverter()));
+        assertEquals(1, formatters.size(), msg);
+        assertTrue(checkClass.isInstance(formatters.get(0).getConverter()), 
msg);
     }
 
     @Test
@@ -401,8 +396,8 @@ public class PatternParserTest {
         final List<String> ignorePackages = options.getIgnorePackages();
         assertNotNull(ignorePackages);
         final String ignorePackagesString = ignorePackages.toString();
-        assertTrue(ignorePackagesString, ignorePackages.contains("org.junit"));
-        assertTrue(ignorePackagesString, 
ignorePackages.contains("org.eclipse"));
+        assertTrue(ignorePackages.contains("org.junit"), ignorePackagesString);
+        assertTrue(ignorePackages.contains("org.eclipse"), 
ignorePackagesString);
         assertEquals("|", options.getSeparator());
     }
 
@@ -411,8 +406,8 @@ public class PatternParserTest {
     public void testMapPatternConverter() {
         final List<PatternFormatter> formatters = parser.parse("%K");
         assertNotNull(formatters);
-        assertTrue(formatters.size() == 1);
+        assertEquals(formatters.size(), 1);
         PatternFormatter formatter = formatters.get(0);
-        assertTrue("Expected a MapPatternConverter", formatter.getConverter() 
instanceof MapPatternConverter);
+        assertTrue(formatter.getConverter() instanceof MapPatternConverter, 
"Expected a MapPatternConverter");
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
index 22f9c28..cc2f3ea 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
@@ -21,13 +21,10 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class PatternParserTest2 {
 
     @Test
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverterTest.java
index d15221d..2e16efd 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverterTest.java
@@ -1,4 +1,4 @@
-package org.apache.logging.log4j.core.pattern;/*
+/*
  * 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.
@@ -14,17 +14,18 @@ package org.apache.logging.log4j.core.pattern;/*
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
+package org.apache.logging.log4j.core.pattern;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests that process ID succeeds.
  */
 public class ProcessIdPatternConverterTest {
     @Test
-    public void getProcessId() throws Exception {
+    public void getProcessId() {
         final String[] defaultValue = {"???"};
         final String actual = 
ProcessIdPatternConverter.newInstance(defaultValue).getProcessId();
         assertNotEquals("???", actual);
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
index bf09eb4..b9ffe3f 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
@@ -23,13 +23,10 @@ import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 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 RegexReplacementConverterTest {
 
     @Test
@@ -47,6 +44,7 @@ public class RegexReplacementConverterTest {
         };
         final RegexReplacementConverter converter = 
RegexReplacementConverter.newInstance(ctx.getConfiguration(),
             options);
+        assertNotNull(converter);
         converter.format(event, sb);
         
assertEquals("org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest
 This is a test" +
             Strings.LINE_SEPARATOR, sb.toString());
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementTest.java
index 16b08d9..7d4e76d 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementTest.java
@@ -16,70 +16,68 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
 import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.junit.ThreadContextMapRule;
+import org.apache.logging.log4j.ThreadContextHolder;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.apache.logging.log4j.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
 
-/**
- *
- */
-public class RegexReplacementTest {
-    private static final String CONFIG = "log4j-replace.xml";
-    private static ListAppender app;
-    private static ListAppender app2;
+import java.util.List;
 
-    private static final String EXPECTED = "/RegexReplacementTest" + 
Strings.LINE_SEPARATOR;
+import static org.junit.jupiter.api.Assertions.*;
 
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule(CONFIG);
+@LoggerContextSource("log4j-replace.xml")
+public class RegexReplacementTest {
+    private final ThreadContextHolder holder = new ThreadContextHolder(true, 
false);
+    private final ListAppender app;
+    private final ListAppender app2;
+    private final org.apache.logging.log4j.Logger logger;
+    private final org.apache.logging.log4j.Logger logger2;
 
-    @Rule
-    public final ThreadContextMapRule threadContextRule = new 
ThreadContextMapRule();
+    private static final String EXPECTED = "/RegexReplacementTest" + 
Strings.LINE_SEPARATOR;
 
-    @Before
-    public void setUp() throws Exception {
-        app = context.getListAppender("List").clear();
-        app2 = context.getListAppender("List2").clear();
+    public RegexReplacementTest(
+            final LoggerContext context, @Named("List") final ListAppender 
app, @Named("List2") final ListAppender app2) {
+        logger = context.getLogger("LoggerTest");
+        logger2 = context.getLogger("ReplacementTest");
+        this.app = app.clear();
+        this.app2 = app2.clear();
+        ThreadContext.clearMap();
     }
 
-    org.apache.logging.log4j.Logger logger = context.getLogger("LoggerTest");
-    org.apache.logging.log4j.Logger logger2 = 
context.getLogger("ReplacementTest");
+    @AfterEach
+    void tearDown() {
+        holder.restore();
+    }
 
     @Test
     public void testReplacement() {
         logger.error(this.getClass().getName());
         List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("Replacement failed - expected ending " + EXPECTED + " 
Actual " + msgs.get(0),
-            msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(
+                msgs.get(0).endsWith(EXPECTED), "Replacement failed - expected 
ending " + EXPECTED + " Actual " + msgs.get(0));
         app.clear();
         ThreadContext.put("MyKey", "Apache");
         logger.error("This is a test for ${ctx:MyKey}");
         msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
         assertEquals("LoggerTest This is a test for Apache" + 
Strings.LINE_SEPARATOR, msgs.get(0));
     }
-     @Test
+
+    @Test
     public void testConverter() {
         logger2.error(this.getClass().getName());
         final List<String> msgs = app2.getMessages();
         assertNotNull(msgs);
-         assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-         assertTrue("Replacement failed - expected ending " + EXPECTED + " 
Actual " + msgs.get(0),
-             msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(
+                msgs.get(0).endsWith(EXPECTED), "Replacement failed - expected 
ending " + EXPECTED + " Actual " + msgs.get(0));
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
index 90d42a6..846a460 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
@@ -16,19 +16,15 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class RootThrowablePatternConverterTest {
 
     @Test
@@ -47,7 +43,7 @@ public class RootThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("No suffix", result.contains("test suffix"));
+        assertTrue(result.contains("test suffix"), "No suffix");
     }
 
     @Test
@@ -67,7 +63,7 @@ public class RootThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("No suffix", result.contains("test suffix"));
+        assertTrue(result.contains("test suffix"), "No suffix");
     }
 
     @Test
@@ -86,7 +82,7 @@ public class RootThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertFalse("Has unexpected suffix", result.contains("inner suffix"));
+        assertFalse(result.contains("inner suffix"), "Has unexpected suffix");
     }
 
     @Test
@@ -104,9 +100,9 @@ public class RootThrowablePatternConverterTest {
         converter.format(event, sb);
         final String result = sb.toString();
         // System.out.print(result);
-        assertTrue("Missing Exception",
-                result.contains("Wrapped by: 
java.lang.IllegalArgumentException: IllegalArgument"));
-        assertTrue("Incorrect start of msg", 
result.startsWith("java.lang.NullPointerException: null pointer"));
+        assertTrue(
+                result.contains("Wrapped by: 
java.lang.IllegalArgumentException: IllegalArgument"), "Missing Exception");
+        assertTrue(result.startsWith("java.lang.NullPointerException: null 
pointer"), "Incorrect start of msg");
     }
 
     /**
@@ -136,8 +132,8 @@ public class RootThrowablePatternConverterTest {
         converter.format(event, sb);
         final String result = sb.toString();
         // System.out.print(result);
-        assertTrue("Missing Exception",
-                result.contains("Wrapped by: 
java.lang.IllegalArgumentException: IllegalArgument"));
-        assertTrue("Incorrect start of msg", 
result.startsWith("java.lang.NullPointerException: null pointer"));
+        assertTrue(
+                result.contains("Wrapped by: 
java.lang.IllegalArgumentException: IllegalArgument"), "Missing Exception");
+        assertTrue(result.startsWith("java.lang.NullPointerException: null 
pointer"), "Incorrect start of msg");
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowableTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowableTest.java
index 9e165a6..04ec850 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowableTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowableTest.java
@@ -16,42 +16,30 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.util.List;
-
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.Test;
 
-/**
- *
- */
-public class RootThrowableTest {
-    private static final String CONFIG = "log4j-rootthrowablefilter.xml";
-    private static ListAppender app;
-
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule(CONFIG);
+import java.util.List;
 
-    @Before
-    public void setUp() throws Exception {
-        app = context.getListAppender("List").clear();
-    }
+import static org.junit.jupiter.api.Assertions.*;
 
+@LoggerContextSource("log4j-rootthrowablefilter.xml")
+public class RootThrowableTest {
     @Test
-    public void testException() {
+    public void testException(final LoggerContext context, @Named("List") 
final ListAppender app) {
+        app.clear();
         final Logger logger = context.getLogger("LoggerTest");
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new 
IllegalArgumentException("IllegalArgument", cause);
         logger.error("Exception", parent);
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("No suppressed lines", msgs.get(0).contains("suppressed"));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(msgs.get(0).contains("suppressed"), "No suppressed lines");
         app.clear();
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterTest.java
index b3fe206..d25df96 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterTest.java
@@ -16,35 +16,31 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.util.List;
-
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.*;
+import java.util.List;
 
-/**
- *
- */
-public class SequenceNumberPatternConverterTest {
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
 
-    @ClassRule
-    public static LoggerContextRule ctx = new 
LoggerContextRule("SequenceNumberPatternConverterTest.yml");
+@LoggerContextSource("SequenceNumberPatternConverterTest.yml")
+public class SequenceNumberPatternConverterTest {
 
     @Test
-    public void testSequenceIncreases() throws Exception {
-        final Logger logger = ctx.getLogger();
+    public void testSequenceIncreases(final LoggerContext context, 
@Named("List") final ListAppender app) {
+        app.clear();
+        final Logger logger = context.getLogger(getClass().getName());
         logger.info("Message 1");
         logger.info("Message 2");
         logger.info("Message 3");
         logger.info("Message 4");
         logger.info("Message 5");
 
-        final ListAppender app = ctx.getListAppender("List");
         final List<String> messages = app.getMessages();
         assertThat(messages, contains("1", "2", "3", "4", "5"));
     }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterZeroPaddedTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterZeroPaddedTest.java
index f7f2540..a7dc8b0 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterZeroPaddedTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverterZeroPaddedTest.java
@@ -16,43 +16,33 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.util.List;
-
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.Test;
-
-import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.*;
-import org.junit.Before;
-import org.junit.ClassRule;
+import org.junit.jupiter.api.Test;
 
-/**
- *
- */
-public class SequenceNumberPatternConverterZeroPaddedTest {
+import java.util.List;
 
-    @ClassRule
-    public static LoggerContextRule ctx = new 
LoggerContextRule("SequenceNumberPatternConverterZeroPaddedTest.yml");
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
 
-    @Before
-    public void before() {
-      ctx.getListAppender("Padded").clear();
-    }
+@LoggerContextSource("SequenceNumberPatternConverterZeroPaddedTest.yml")
+public class SequenceNumberPatternConverterZeroPaddedTest {
 
     @Test
-    public void testPaddedSequence() throws Exception {
-        final Logger logger = ctx.getLogger();
+    public void testPaddedSequence(final LoggerContext context, 
@Named("Padded") final ListAppender app) {
+        app.clear();
+        final Logger logger = context.getLogger(getClass().getName());
         logger.info("Message 1");
         logger.info("Message 2");
         logger.info("Message 3");
         logger.info("Message 4");
         logger.info("Message 5");
 
-        final ListAppender app = ctx.getListAppender("Padded");
         final List<String> messages = app.getMessages();
-        System.out.println("Written messages "+messages);
+        // System.out.println("Written messages "+messages);
         assertThat(messages, contains("001", "002", "003", "004", "005"));
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/StyleConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/StyleConverterTest.java
index 248fdc3..f82be20 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/StyleConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/StyleConverterTest.java
@@ -19,55 +19,42 @@ package org.apache.logging.log4j.core.pattern;
 import java.util.List;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class StyleConverterTest {
 
     private static final String EXPECTED =
         "\u001B[1;31mERROR\u001B[m \u001B[1;36mLoggerTest\u001B[m 
o.a.l.l.c.p.StyleConverterTest 
org.apache.logging.log4j.core.pattern.StyleConverterTest"
         + Strings.LINE_SEPARATOR;
 
-    @BeforeClass
+    @BeforeAll
     public static void beforeClass() {
         System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: 
explicitly enable
     }
 
-    @Rule
-    public LoggerContextRule init = new LoggerContextRule("log4j-style.xml");
-
-    private Logger logger;
-    private ListAppender app;
-
-    @Before
-    public void setUp() throws Exception {
-        this.logger = this.init.getLogger("LoggerTest");
-        this.app = this.init.getListAppender("List").clear();
-    }
-
     @Test
-    public void testReplacement() {
+    @LoggerContextSource("log4j-style.xml")
+    public void testReplacement(final LoggerContext context, @Named("List") 
final ListAppender app) {
+        final Logger logger = context.getLogger("LoggerTest");
         logger.error(this.getClass().getName());
 
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertTrue("Replacement failed - expected ending " + EXPECTED + ", 
actual " + msgs.get(0), msgs.get(0).endsWith(EXPECTED));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertTrue(msgs.get(0).endsWith(EXPECTED),
+                "Replacement failed - expected ending " + EXPECTED + ", actual 
" + msgs.get(0));
     }
 
     @Test
     public void testNull() {
-        Assert.assertNull(StyleConverter.newInstance(null, null));
+        assertNull(StyleConverter.newInstance(null, null));
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
index b608df8..883cf71 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
@@ -18,13 +18,10 @@ package org.apache.logging.log4j.core.pattern;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class ThreadIdPatternConverterTest {
 
     @Test
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
index 1ae94d2..2458b6b 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
@@ -18,13 +18,10 @@ package org.apache.logging.log4j.core.pattern;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class ThreadNamePatternConverterTest {
 
     @Test
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
index 37db555..82b6cd7 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
@@ -18,13 +18,10 @@ package org.apache.logging.log4j.core.pattern;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class ThreadPriorityPatternConverterTest {
 
     @Test
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
index 4931cf0..cc52994 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
@@ -16,15 +16,14 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ThrowablePatternConverterTest {
 
@@ -51,10 +50,10 @@ public class ThrowablePatternConverterTest {
     /**
      * TODO: Needs better a better exception? NumberFormatException is NOT 
helpful.
      */
-    @Test(expected = Exception.class)
+    @Test
     public void testBadShortOption() {
         final String[] options = { "short.UNKNOWN" };
-        ThrowablePatternConverter.newInstance(null, options);
+        assertThrows(NumberFormatException.class, () -> 
ThrowablePatternConverter.newInstance(null, options));
     }
 
     @Test
@@ -81,8 +80,8 @@ public class ThrowablePatternConverterTest {
         converter.format(event, sb);
         final String result = sb.toString();
         // System.out.print(result);
-        assertTrue("Incorrect start of msg", 
result.startsWith("java.lang.IllegalArgumentException: IllegalArgument"));
-        assertTrue("Missing nested exception", 
result.contains("java.lang.NullPointerException: null pointer"));
+        assertTrue(result.startsWith("java.lang.IllegalArgumentException: 
IllegalArgument"), "Incorrect start of msg");
+        assertTrue(result.contains("java.lang.NullPointerException: null 
pointer"), "Missing nested exception");
     }
 
     @Test
@@ -101,7 +100,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertEquals("The class names should be same", packageName + 
"ThrowablePatternConverterTest", result);
+        assertEquals(packageName + "ThrowablePatternConverterTest", result, 
"The class names should be same");
     }
 
     @Test
@@ -119,7 +118,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertEquals("The file names should be same", 
"ThrowablePatternConverterTest.java", result);
+        assertEquals("ThrowablePatternConverterTest.java", result, "The file 
names should be same");
     }
 
     @Test
@@ -140,7 +139,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("The line numbers should be same", expectedLineNumber == 
Integer.parseInt(result));
+        assertEquals(Integer.parseInt(result), expectedLineNumber, "The line 
numbers should be same");
     }
 
     @Test
@@ -157,7 +156,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertEquals("The messages should be same", "I am localized.", result);
+        assertEquals("I am localized.", result, "The messages should be same");
     }
 
     @Test
@@ -175,7 +174,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertEquals("The messages should be same", "IllegalArgument", result);
+        assertEquals("IllegalArgument", result, "The messages should be same");
     }
 
     @Test
@@ -193,7 +192,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertEquals("The method names should be same", "testShortMethodName", 
result);
+        assertEquals("testShortMethodName", result, "The method names should 
be same");
     }
 
     @Test
@@ -219,7 +218,8 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("Each line of full stack trace should end with the 
specified suffix", everyLineEndsWith(result, "test suffix"));
+        assertTrue(everyLineEndsWith(result, "test suffix"),
+                "Each line of full stack trace should end with the specified 
suffix");
     }
 
     @Test
@@ -238,7 +238,7 @@ public class ThrowablePatternConverterTest {
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
         final String result = sb.toString();
-        assertTrue("Each line should end with suffix", 
everyLineEndsWith(result, "test suffix"));
+        assertTrue(everyLineEndsWith(result, "test suffix"), "Each line should 
end with suffix");
     }
 
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowableTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowableTest.java
index 80a7ed8..8e6847d 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowableTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowableTest.java
@@ -19,31 +19,29 @@ package org.apache.logging.log4j.core.pattern;
 import java.util.List;
 
 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.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Unit tests for {@code throwable} pattern.
  */
+@LoggerContextSource("log4j-throwable.xml")
 public class ThrowableTest {
-    private static final String CONFIG = "log4j-throwable.xml";
-    private static ListAppender app;
+    private ListAppender app;
+    private Logger logger;
 
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule(CONFIG);
-
-    @Before
-    public void setUp() throws Exception {
-        app = context.getListAppender("List").clear();
+    @BeforeEach
+    public void setUp(final LoggerContext context, @Named("List") final 
ListAppender app) {
+        this.logger = context.getLogger("LoggerTest");
+        this.app = app.clear();
     }
 
-    Logger logger = context.getLogger("LoggerTest");
-
     @Test
     public void testException() {
         final Throwable cause = new NullPointerException("null pointer");
@@ -51,7 +49,7 @@ public class ThrowableTest {
         logger.error("Exception", parent);
         final List<String> msgs = app.getMessages();
         assertNotNull(msgs);
-        assertEquals("Incorrect number of messages. Should be 1 is " + 
msgs.size(), 1, msgs.size());
-        assertFalse("No suppressed lines", msgs.get(0).contains("suppressed"));
+        assertEquals(1, msgs.size(), "Incorrect number of messages. Should be 
1 is " + msgs.size());
+        assertFalse(msgs.get(0).contains("suppressed"), "No suppressed lines");
     }
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverterTest.java
index dd6f1b6..34a8a13 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverterTest.java
@@ -16,19 +16,16 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import static org.junit.Assert.assertEquals;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class VariablesNotEmptyReplacementConverterTest {
 
     @Test
@@ -72,6 +69,7 @@ public class VariablesNotEmptyReplacementConverterTest {
         final String[] options = new String[] { "[" + tag + "]" };
         final VariablesNotEmptyReplacementConverter converter = 
VariablesNotEmptyReplacementConverter
                 .newInstance(ctx.getConfiguration(), options);
+        assertNotNull(converter);
         converter.format(event, sb);
         assertEquals(expectedValue, sb.toString());
     }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java
index 2654fd0..9d4bce6 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ClockFactoryTest.java
@@ -40,7 +40,7 @@ public class ClockFactoryTest {
     public static void resetClock(final Class<?> clazz) throws 
IllegalAccessException {
         System.clearProperty(ClockFactory.PROPERTY_NAME);
         final Field field = FieldUtils.getField(clazz, "CLOCK", true);
-        FieldUtils.removeFinalModifier(field, true);
+        FieldUtils.removeFinalModifier(field);
         FieldUtils.writeStaticField(field, ClockFactory.getClock(), false);
     }
 

Reply via email to