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

[logging-log4j2] branch release-2.x updated (8865f6a -> dca3b38)

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

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


    from 8865f6a  Add changelog entry for LOG4J2-2919
     new d92d546  Migrate more config tests to JUnit 5
     new dca3b38  Revert "Introduce annotation for JUnit 5 LCF tests"

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../junit/LogManagerLoggerContextFactoryRule.java  |  2 +-
 .../log4j/junit/LoggerContextFactoryExtension.java | 31 +++-----
 .../log4j/junit/RegisterLoggerContextFactory.java  | 41 -----------
 .../logging/log4j/simple/SimpleLoggerTest.java     |  9 ++-
 .../log4j/core/config/MockReliabilityStrategy.java |  7 --
 .../log4j/core/config/TestConfiguratorError.java   |  8 +-
 .../config/builder/ConfigurationAssemblerTest.java | 32 ++++----
 .../config/builder/ConfigurationBuilderTest.java   | 14 ++--
 .../plugins/util/PluginManagerPackagesTest.java    | 26 +++----
 .../validators/RequiredValidatorTest.java          | 10 +--
 .../validators/ValidHostValidatorTest.java         | 22 +++---
 .../validators/ValidPortValidatorTest.java         | 12 +--
 .../ValidatingPluginWithFailoverTest.java          | 12 +--
 .../ValidatingPluginWithGenericBuilderTest.java    | 14 ++--
 ...ngPluginWithGenericSubclassFoo1BuilderTest.java | 14 ++--
 .../ValidatingPluginWithTypedBuilderTest.java      | 14 ++--
 .../PropertiesConfigurationRootLoggerOnlyTest.java | 60 ---------------
 .../properties/PropertiesConfigurationTest.java    | 85 +++++++++++++++++-----
 ...rtiesConfigurationTrailingSpaceOnLevelTest.java | 67 -----------------
 .../properties/RollingFilePropertiesTest.java      | 60 ---------------
 .../core/config/xml/XmlConfigurationPropsTest.java | 22 +++---
 ...Security.java => XmlConfigurationSecurity.java} | 13 +++-
 .../log4j/core/config/xml/XmlLoggerPropsTest.java  | 72 ++++++++----------
 23 files changed, 219 insertions(+), 428 deletions(-)
 delete mode 100644 log4j-api/src/test/java/org/apache/logging/log4j/junit/RegisterLoggerContextFactory.java
 delete mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationRootLoggerOnlyTest.java
 delete mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTrailingSpaceOnLevelTest.java
 delete mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/RollingFilePropertiesTest.java
 rename log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/{XmlConigurationSecurity.java => XmlConfigurationSecurity.java} (82%)


[logging-log4j2] 01/02: Migrate more config tests to JUnit 5

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d92d54690fc47cff2abd5d38df08cf370c1c2e29
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 13:02:35 2020 -0500

    Migrate more config tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../log4j/core/config/MockReliabilityStrategy.java |  7 --
 .../config/builder/ConfigurationAssemblerTest.java | 32 ++++----
 .../config/builder/ConfigurationBuilderTest.java   | 14 ++--
 .../plugins/util/PluginManagerPackagesTest.java    | 26 +++----
 .../validators/RequiredValidatorTest.java          | 10 +--
 .../validators/ValidHostValidatorTest.java         | 22 +++---
 .../validators/ValidPortValidatorTest.java         | 12 +--
 .../ValidatingPluginWithFailoverTest.java          | 12 +--
 .../ValidatingPluginWithGenericBuilderTest.java    | 14 ++--
 ...ngPluginWithGenericSubclassFoo1BuilderTest.java | 14 ++--
 .../ValidatingPluginWithTypedBuilderTest.java      | 14 ++--
 .../PropertiesConfigurationRootLoggerOnlyTest.java | 60 ---------------
 .../properties/PropertiesConfigurationTest.java    | 85 +++++++++++++++++-----
 ...rtiesConfigurationTrailingSpaceOnLevelTest.java | 67 -----------------
 .../properties/RollingFilePropertiesTest.java      | 60 ---------------
 .../core/config/xml/XmlConfigurationPropsTest.java | 22 +++---
 ...Security.java => XmlConfigurationSecurity.java} | 13 +++-
 .../log4j/core/config/xml/XmlLoggerPropsTest.java  | 72 ++++++++----------
 18 files changed, 197 insertions(+), 359 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MockReliabilityStrategy.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MockReliabilityStrategy.java
index 5e5e87c..76f2b58 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MockReliabilityStrategy.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/MockReliabilityStrategy.java
@@ -52,13 +52,6 @@ public class MockReliabilityStrategy implements ReliabilityStrategy {
     }
 
     @Override
-    public void log(
-            final Supplier<LoggerConfig> reconfigured, final String loggerName, final String fqcn,
-            final StackTraceElement location, final Marker marker, final Level level, final Message data, final Throwable t) {
-        config.log(loggerName, fqcn, location, marker, level, data, t);
-    }
-
-    @Override
     public void log(final Supplier<LoggerConfig> reconfigured, final LogEvent event) {
         config.log(event);
     }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationAssemblerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationAssemblerTest.java
index ec4f541..3c32189 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationAssemblerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationAssemblerTest.java
@@ -16,11 +16,6 @@
  */
 package org.apache.logging.log4j.core.config.builder;
 
-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.util.List;
 import java.util.Map;
 
@@ -31,6 +26,7 @@ import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LifeCycle;
 import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
 import org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppender;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
@@ -42,12 +38,14 @@ import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFact
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
 import org.apache.logging.log4j.core.filter.ThresholdFilter;
 import org.apache.logging.log4j.core.layout.GelfLayout;
+import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.util.Constants;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class ConfigurationAssemblerTest {
 
     @Test
@@ -85,16 +83,18 @@ public class ConfigurationAssemblerTest {
         assertNotNull(config);
         assertNotNull(config.getName());
         assertFalse(config.getName().isEmpty());
-        assertNotNull("No configuration created", config);
-        assertEquals("Incorrect State: " + config.getState(), config.getState(), LifeCycle.State.STARTED);
+        assertNotNull(config, "No configuration created");
+        assertEquals(config.getState(), LifeCycle.State.STARTED, "Incorrect State: " + config.getState());
         final Map<String, Appender> appenders = config.getAppenders();
         assertNotNull(appenders);
-        assertTrue("Incorrect number of Appenders: " + appenders.size(), appenders.size() == 2);
+        assertEquals(appenders.size(), 2, "Incorrect number of Appenders: " + appenders.size());
         final KafkaAppender kafkaAppender = (KafkaAppender)appenders.get("Kafka");
         final GelfLayout gelfLayout = (GelfLayout)kafkaAppender.getLayout();
+        final ConsoleAppender consoleAppender = (ConsoleAppender)appenders.get("Stdout");
+        final PatternLayout patternLayout = (PatternLayout)consoleAppender.getLayout();
         final Map<String, LoggerConfig> loggers = config.getLoggers();
         assertNotNull(loggers);
-        assertTrue("Incorrect number of LoggerConfigs: " + loggers.size(), loggers.size() == 2);
+        assertEquals(loggers.size(), 2, "Incorrect number of LoggerConfigs: " + loggers.size());
         final LoggerConfig rootLoggerConfig = loggers.get("");
         assertEquals(Level.ERROR, rootLoggerConfig.getLevel());
         assertFalse(rootLoggerConfig.isIncludeLocation());
@@ -102,10 +102,10 @@ public class ConfigurationAssemblerTest {
         assertEquals(Level.DEBUG, loggerConfig.getLevel());
         assertTrue(loggerConfig.isIncludeLocation());
         final Filter filter = config.getFilter();
-        assertNotNull("No Filter", filter);
-        assertTrue("Not a Threshold Filter", filter instanceof ThresholdFilter);
+        assertNotNull(filter, "No Filter");
+        assertThat(filter, instanceOf(ThresholdFilter.class));
         final List<CustomLevelConfig> customLevels = config.getCustomLevels();
-        assertNotNull("No CustomLevels", filter);
+        assertNotNull(filter, "No CustomLevels");
         assertEquals(1, customLevels.size());
         final CustomLevelConfig customLevel = customLevels.get(0);
         assertEquals("Panic", customLevel.getLevelName());
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
index bbb7f10..2111c5f 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.config.builder;
 
-import java.util.concurrent.TimeUnit;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.appender.ConsoleAppender;
@@ -25,10 +23,13 @@ import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder
 import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
 import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledOnOs;
+import org.junit.jupiter.api.condition.OS;
+
+import java.util.concurrent.TimeUnit;
 
-import static org.junit.Assert.*;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class ConfigurationBuilderTest {
 
@@ -107,10 +108,9 @@ public class ConfigurationBuilderTest {
                 INDENT + "</Loggers>" + EOL +
             "</Configuration>" + EOL;
 
-    // TODO make test run properly on Windows
     @Test
+    @DisabledOnOs(OS.WINDOWS) // TODO make test run properly on Windows
     public void testXmlConstructing() throws Exception {
-        assumeTrue(System.lineSeparator().length() == 1); // Only run test on platforms with single character line endings (such as Linux), not on Windows
         final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
         addTestFixtures("config name", builder);
         final String xmlConfiguration = builder.toXmlConfiguration();
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/PluginManagerPackagesTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/PluginManagerPackagesTest.java
index c97643f..7e4aae3 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/PluginManagerPackagesTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/PluginManagerPackagesTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.logging.log4j.core.config.plugins.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
@@ -41,15 +39,17 @@ import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.config.Configurator;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.AfterClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class PluginManagerPackagesTest {
     private static Configuration config;
     private static ListAppender listAppender;
     private static LoggerContext ctx;
 
-    @AfterClass
+    @AfterAll
     public static void cleanupClass() {
         System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
         ctx.reconfigure();
@@ -64,9 +64,9 @@ public class PluginManagerPackagesTest {
         // So we don't create the custom plugin class until this test is run.
         final File orig = new File("target/test-classes/customplugin/FixedStringLayout.java.source");
         final File f = new File(orig.getParentFile(), "FixedStringLayout.java");
-        assertTrue("renamed source file OK", orig.renameTo(f));
+        assertTrue(orig.renameTo(f), "renamed source file failed");
         compile(f);
-        assertTrue("reverted source file OK", f.renameTo(orig));
+        assertTrue(f.renameTo(orig), "reverted source file failed");
 
         // load the compiled class
         Class.forName("customplugin.FixedStringLayout");
@@ -81,7 +81,7 @@ public class PluginManagerPackagesTest {
         logger.info("this message is ignored");
 
         final List<String> messages = listAppender.getMessages();
-        assertEquals(messages.toString(), 1, messages.size());
+        assertEquals(1, messages.size(), messages.toString());
         assertEquals("abc123XYZ", messages.get(0));
     }
 
@@ -91,12 +91,12 @@ public class PluginManagerPackagesTest {
         final DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
         final List<String> errors = new ArrayList<>();
         try (final StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null)) {
-            final Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays
-                    .asList(f));
+            final Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(
+                    Collections.singletonList(f));
 
             // compile generated source
             // (switch off annotation processing: no need to create Log4j2Plugins.dat)
-            final List<String> options = Arrays.asList("-proc:none");
+            final List<String> options = Collections.singletonList("-proc:none");
             compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits).call();
 
             // check we don't have any compilation errors
@@ -106,6 +106,6 @@ public class PluginManagerPackagesTest {
                 }
             }
         }
-        assertTrue(errors.toString(), errors.isEmpty());
+        assertTrue(errors.isEmpty(), errors.toString());
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
index db06cda..40bc4ca 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiredValidatorTest.java
@@ -22,10 +22,10 @@ import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.ValidatingPlugin;
-import org.junit.Before;
-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.*;
 
 public class RequiredValidatorTest {
 
@@ -33,12 +33,12 @@ public class RequiredValidatorTest {
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager("Test");
         manager.collectPlugins();
         plugin = (PluginType<ValidatingPlugin>) manager.getPluginType("Validator");
-        assertNotNull("Rebuild this module to make sure annotation processing kicks in.", plugin);
+        assertNotNull(plugin, "Rebuild this module to make sure annotation processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
index 3a5f534..fc280eb 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
@@ -23,28 +23,28 @@ import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.HostAndPort;
-import org.apache.logging.log4j.junit.StatusLoggerRule;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.apache.logging.log4j.junit.StatusLoggerLevelExtension;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ValidHostValidatorTest {
 
-    @Rule
-    public StatusLoggerRule rule = new StatusLoggerRule(Level.FATAL);
+    @RegisterExtension
+    static StatusLoggerLevelExtension extension = new StatusLoggerLevelExtension(Level.FATAL);
 
     private PluginType<HostAndPort> plugin;
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager("Test");
         manager.collectPlugins();
         plugin = (PluginType<HostAndPort>) manager.getPluginType("HostAndPort");
-        assertNotNull("Rebuild this module to ensure annotation processing has been done.", plugin);
+        assertNotNull(plugin, "Rebuild this module to ensure annotation processing has been done.");
         node = new Node(null, "HostAndPort", plugin);
     }
 
@@ -58,7 +58,7 @@ public class ValidHostValidatorTest {
         node.getAttributes().put("host", "256.256.256.256");
         node.getAttributes().put("port", "1");
         final HostAndPort plugin = buildPlugin();
-        assertNull("Expected null, but got: " + plugin, plugin);
+        assertNull(plugin, "Expected null, but got: " + plugin);
     }
 
     @Test
@@ -76,4 +76,4 @@ public class ValidHostValidatorTest {
             .withConfigurationNode(node)
             .build();
     }
-}
\ No newline at end of file
+}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
index 3aab08d..5476d03 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java
@@ -22,22 +22,22 @@ import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.HostAndPort;
-import org.junit.Before;
-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.*;
 
 public class ValidPortValidatorTest {
     private PluginType<HostAndPort> plugin;
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager("Test");
         manager.collectPlugins();
         plugin = (PluginType<HostAndPort>) manager.getPluginType("HostAndPort");
-        assertNotNull("Rebuild this module to ensure annotation processing has been done.", plugin);
+        assertNotNull(plugin, "Rebuild this module to ensure annotation processing has been done.");
         node = new Node(null, "HostAndPort", plugin);
         node.getAttributes().put("host", "localhost");
     }
@@ -67,4 +67,4 @@ public class ValidPortValidatorTest {
             .build();
     }
 
-}
\ No newline at end of file
+}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
index e52a545..789a1d8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithFailoverTest.java
@@ -29,14 +29,16 @@ import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.status.StatusData;
 import org.apache.logging.log4j.status.StatusListener;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.emptyCollectionOf;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class ValidatingPluginWithFailoverTest {
 
@@ -44,12 +46,12 @@ public class ValidatingPluginWithFailoverTest {
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager(Core.CATEGORY_NAME);
         manager.collectPlugins();
         plugin = (PluginType<FailoverAppender>) manager.getPluginType("failover");
-        assertNotNull("Rebuild this module to make sure annotation processing kicks in.", plugin);
+        assertNotNull(plugin, "Rebuild this module to make sure annotation processing kicks in.");
 
         AppenderRef appenderRef = AppenderRef.createAppenderRef("List", Level.ALL, null);
         node = new Node(null, "failover", plugin);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
index d3f2cd2..ed0d30c 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericBuilderTest.java
@@ -16,18 +16,16 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.ValidatingPluginWithGenericBuilder;
-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 ValidatingPluginWithGenericBuilderTest {
 
@@ -35,12 +33,12 @@ public class ValidatingPluginWithGenericBuilderTest {
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager("Test");
         manager.collectPlugins();
         plugin = (PluginType<ValidatingPluginWithGenericBuilder>) manager.getPluginType("ValidatingPluginWithGenericBuilder");
-        assertNotNull("Rebuild this module to make sure annotation processing kicks in.", plugin);
+        assertNotNull(plugin, "Rebuild this module to make sure annotation processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
index 6461648..ac40c11 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithGenericSubclassFoo1BuilderTest.java
@@ -16,18 +16,16 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.PluginWithGenericSubclassFoo1Builder;
-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 ValidatingPluginWithGenericSubclassFoo1BuilderTest {
 
@@ -35,12 +33,12 @@ public class ValidatingPluginWithGenericSubclassFoo1BuilderTest {
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager("Test");
         manager.collectPlugins();
         plugin = (PluginType<PluginWithGenericSubclassFoo1Builder>) manager.getPluginType("PluginWithGenericSubclassFoo1Builder");
-        assertNotNull("Rebuild this module to make sure annotation processing kicks in.", plugin);
+        assertNotNull(plugin, "Rebuild this module to make sure annotation processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
index 180c31d..3be88e6 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidatingPluginWithTypedBuilderTest.java
@@ -16,18 +16,16 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.ValidatingPluginWithTypedBuilder;
-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 ValidatingPluginWithTypedBuilderTest {
 
@@ -35,13 +33,13 @@ public class ValidatingPluginWithTypedBuilderTest {
     private Node node;
 
     @SuppressWarnings("unchecked")
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         final PluginManager manager = new PluginManager("Test");
         manager.collectPlugins();
         plugin = (PluginType<ValidatingPluginWithTypedBuilder>) manager
                 .getPluginType("ValidatingPluginWithTypedBuilder");
-        assertNotNull("Rebuild this module to make sure annotation processing kicks in.", plugin);
+        assertNotNull(plugin, "Rebuild this module to make sure annotation processing kicks in.");
         node = new Node(null, "Validator", plugin);
     }
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationRootLoggerOnlyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationRootLoggerOnlyTest.java
deleted file mode 100644
index acc5220..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationRootLoggerOnlyTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.config.properties;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.LifeCycle;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.apache.logging.log4j.core.filter.ThresholdFilter;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class PropertiesConfigurationRootLoggerOnlyTest {
-
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule("log4j2-properties-root-only.properties");
-
-    @Test
-    public void testPropertiesConfiguration() {
-        final Configuration config = context.getConfiguration();
-        assertNotNull("No configuration created", config);
-        assertEquals("Incorrect State: " + config.getState(), config.getState(), LifeCycle.State.STARTED);
-        final Map<String, Appender> appenders = config.getAppenders();
-        assertNotNull(appenders);
-        assertTrue("Incorrect number of Appenders: " + appenders.size(), appenders.size() == 1);
-        final Map<String, LoggerConfig> loggers = config.getLoggers();
-        assertNotNull(loggers);
-        assertTrue("Incorrect number of LoggerConfigs: " + loggers.size(), loggers.size() == 1);
-        final Filter filter = config.getFilter();
-        assertNotNull("No Filter", filter);
-        assertTrue("Not a Threshold Filter", filter instanceof ThresholdFilter);
-        final Logger logger = LogManager.getLogger(getClass());
-        logger.info("Welcome to Log4j!");
-    }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTest.java
index 0e3c2c1..1a75512 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.logging.log4j.core.config.properties;
 
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.Appender;
@@ -24,37 +25,85 @@ import org.apache.logging.log4j.core.LifeCycle;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.logging.log4j.core.filter.ThresholdFilter;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.junit.jupiter.api.Test;
 
 import java.util.Map;
 
-import static org.junit.Assert.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
-public class PropertiesConfigurationTest {
+class PropertiesConfigurationTest {
+
+    @Test
+    @LoggerContextSource("log4j2-properties.properties")
+    void testPropertiesConfiguration(final Configuration config) {
+        assertEquals(config.getState(), LifeCycle.State.STARTED, "Incorrect State: " + config.getState());
+        final Map<String, Appender> appenders = config.getAppenders();
+        assertNotNull(appenders);
+        assertEquals(1, appenders.size(), "Incorrect number of Appenders: " + appenders.size());
+        final Map<String, LoggerConfig> loggers = config.getLoggers();
+        assertNotNull(loggers);
+        assertEquals(2, loggers.size(), "Incorrect number of LoggerConfigs: " + loggers.size());
+        final Filter filter = config.getFilter();
+        assertNotNull(filter, "No Filter");
+        assertTrue(filter instanceof ThresholdFilter, "Not a Threshold Filter");
+        final Logger logger = LogManager.getLogger(getClass());
+        logger.info("Welcome to Log4j!");
+    }
 
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule("log4j2-properties.properties");
+    @Test
+    @LoggerContextSource("log4j2-properties-root-only.properties")
+    void testRootLoggerOnly(final Configuration config) {
+        assertEquals(config.getState(), LifeCycle.State.STARTED, "Incorrect State: " + config.getState());
+        final Map<String, Appender> appenders = config.getAppenders();
+        assertNotNull(appenders);
+        assertEquals(appenders.size(), 1, "Incorrect number of Appenders: " + appenders.size());
+        final Map<String, LoggerConfig> loggers = config.getLoggers();
+        assertNotNull(loggers);
+        assertEquals(loggers.size(), 1, "Incorrect number of LoggerConfigs: " + loggers.size());
+        final Filter filter = config.getFilter();
+        assertNotNull(filter, "No Filter");
+        assertThat(filter, instanceOf(ThresholdFilter.class));
+        final Logger logger = LogManager.getLogger(getClass());
+        logger.info("Welcome to Log4j!");
+    }
 
     @Test
-    public void testPropertiesConfiguration() {
-        final Configuration config = context.getConfiguration();
-        assertNotNull("No configuration created", config);
-        assertEquals("Incorrect State: " + config.getState(), config.getState(), LifeCycle.State.STARTED);
+    @LoggerContextSource("log4j-rolling.properties")
+    void testRollingFile(final Configuration config) {
+        assertEquals(config.getState(), LifeCycle.State.STARTED, "Incorrect State: " + config.getState());
         final Map<String, Appender> appenders = config.getAppenders();
         assertNotNull(appenders);
-        assertTrue("Incorrect number of Appenders: " + appenders.size(), appenders.size() == 1);
+        assertEquals(appenders.size(), 3, "Incorrect number of Appenders: " + appenders.size());
         final Map<String, LoggerConfig> loggers = config.getLoggers();
         assertNotNull(loggers);
-        assertTrue("Incorrect number of LoggerConfigs: " + loggers.size(), loggers.size() == 2);
+        assertEquals(loggers.size(), 2, "Incorrect number of LoggerConfigs: " + loggers.size());
         final Filter filter = config.getFilter();
-        assertNotNull("No Filter", filter);
-        assertTrue("Not a Threshold Filter", filter instanceof ThresholdFilter);
+        assertNotNull(filter, "No Filter");
+        assertThat(filter, instanceOf(ThresholdFilter.class));
         final Logger logger = LogManager.getLogger(getClass());
         logger.info("Welcome to Log4j!");
     }
+
+    @Test
+    @LoggerContextSource("log4j2-properties-trailing-space-on-level.properties")
+    void testTrailingSpaceOnLevel(final Configuration config) {
+        assertEquals(config.getState(), LifeCycle.State.STARTED, "Incorrect State: " + config.getState());
+        final Map<String, Appender> appenders = config.getAppenders();
+        assertNotNull(appenders);
+        assertEquals(appenders.size(), 1, "Incorrect number of Appenders: " + appenders.size());
+        final Map<String, LoggerConfig> loggers = config.getLoggers();
+        assertNotNull(loggers);
+        assertEquals(loggers.size(), 2, "Incorrect number of LoggerConfigs: " + loggers.size());
+        final Filter filter = config.getFilter();
+        assertNotNull(filter, "No Filter");
+        assertThat(filter, instanceOf(ThresholdFilter.class));
+        final Logger logger = LogManager.getLogger(getClass());
+
+        assertEquals(Level.DEBUG, logger.getLevel(), "Incorrect level " + logger.getLevel());
+
+        logger.debug("Welcome to Log4j!");
+    }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTrailingSpaceOnLevelTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTrailingSpaceOnLevelTest.java
deleted file mode 100644
index 743040e..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationTrailingSpaceOnLevelTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.config.properties;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Map;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.LifeCycle;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.apache.logging.log4j.core.filter.ThresholdFilter;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-/**
- *
- */
-public class PropertiesConfigurationTrailingSpaceOnLevelTest {
-
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule(
-            "log4j2-properties-trailing-space-on-level.properties");
-
-    @Test
-    public void testPropertiesConfiguration() {
-        final Configuration config = context.getConfiguration();
-        assertNotNull("No configuration created", config);
-        assertEquals("Incorrect State: " + config.getState(), config.getState(), LifeCycle.State.STARTED);
-        final Map<String, Appender> appenders = config.getAppenders();
-        assertNotNull(appenders);
-        assertTrue("Incorrect number of Appenders: " + appenders.size(), appenders.size() == 1);
-        final Map<String, LoggerConfig> loggers = config.getLoggers();
-        assertNotNull(loggers);
-        assertTrue("Incorrect number of LoggerConfigs: " + loggers.size(), loggers.size() == 2);
-        final Filter filter = config.getFilter();
-        assertNotNull("No Filter", filter);
-        assertTrue("Not a Threshold Filter", filter instanceof ThresholdFilter);
-        final Logger logger = LogManager.getLogger(getClass());
-
-        assertEquals("Incorrect level " + logger.getLevel(), Level.DEBUG, logger.getLevel());
-
-        logger.debug("Welcome to Log4j!");
-    }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/RollingFilePropertiesTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/RollingFilePropertiesTest.java
deleted file mode 100644
index 9baf89b..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/properties/RollingFilePropertiesTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.config.properties;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.LifeCycle;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.apache.logging.log4j.core.filter.ThresholdFilter;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class RollingFilePropertiesTest {
-
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule("log4j-rolling.properties");
-
-    @Test
-    public void testPropertiesConfiguration() {
-        final Configuration config = context.getConfiguration();
-        assertNotNull("No configuration created", config);
-        assertEquals("Incorrect State: " + config.getState(), config.getState(), LifeCycle.State.STARTED);
-        final Map<String, Appender> appenders = config.getAppenders();
-        assertNotNull(appenders);
-        assertTrue("Incorrect number of Appenders: " + appenders.size(), appenders.size() == 3);
-        final Map<String, LoggerConfig> loggers = config.getLoggers();
-        assertNotNull(loggers);
-        assertTrue("Incorrect number of LoggerConfigs: " + loggers.size(), loggers.size() == 2);
-        final Filter filter = config.getFilter();
-        assertNotNull("No Filter", filter);
-        assertTrue("Not a Threshold Filter", filter instanceof ThresholdFilter);
-        final Logger logger = LogManager.getLogger(getClass());
-        logger.info("Welcome to Log4j!");
-    }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
index 37781a9..94fa152 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
@@ -21,20 +21,18 @@ import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.AfterClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
 
-/**
- *
- */
 public class XmlConfigurationPropsTest {
 
     private static final String CONFIG = "log4j-props.xml";
     private static final String CONFIG1 = "log4j-props1.xml";
 
-    @AfterClass
+    @AfterAll
     public static void cleanupClass() {
         System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
         final LoggerContext ctx = LoggerContext.getContext();
@@ -48,10 +46,9 @@ public class XmlConfigurationPropsTest {
         final LoggerContext ctx = LoggerContext.getContext();
         ctx.reconfigure();
         final Configuration config = ctx.getConfiguration();
-        assertTrue("Configuration is not an XmlConfiguration", config instanceof XmlConfiguration);
+        assertThat(config, instanceOf(XmlConfiguration.class));
     }
 
-
     @Test
     public void testDefaultStatus() {
         System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG1);
@@ -60,7 +57,7 @@ public class XmlConfigurationPropsTest {
             final LoggerContext ctx = LoggerContext.getContext();
             ctx.reconfigure();
             final Configuration config = ctx.getConfiguration();
-            assertTrue("Configuration is not an XmlConfiguration", config instanceof XmlConfiguration);
+            assertThat(config, instanceOf(XmlConfiguration.class));
         } finally {
             System.clearProperty(Constants.LOG4J_DEFAULT_STATUS_LEVEL);
         }
@@ -74,10 +71,9 @@ public class XmlConfigurationPropsTest {
             final LoggerContext ctx = LoggerContext.getContext();
             ctx.reconfigure();
             final Configuration config = ctx.getConfiguration();
-            assertTrue("Configuration is not an XmlConfiguration", config instanceof XmlConfiguration);
+            assertThat(config, instanceOf(XmlConfiguration.class));
         } finally {
             System.clearProperty("log4j.level");
-
         }
     }
 
@@ -90,7 +86,7 @@ public class XmlConfigurationPropsTest {
             final LoggerContext ctx = LoggerContext.getContext();
             ctx.reconfigure();
             final Configuration config = ctx.getConfiguration();
-            assertTrue("Configuration is not an XmlConfiguration", config instanceof XmlConfiguration);
+            assertThat(config, instanceOf(XmlConfiguration.class));
         } finally {
             System.clearProperty("log4j.level");
             System.clearProperty("log.level");
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConigurationSecurity.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationSecurity.java
similarity index 82%
rename from log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConigurationSecurity.java
rename to log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationSecurity.java
index f7d1425..4cd4c74 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConigurationSecurity.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationSecurity.java
@@ -18,15 +18,20 @@ package org.apache.logging.log4j.core.config.xml;
 
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configurator;
-import org.junit.Test;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 import java.io.IOException;
 
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-public class XmlConigurationSecurity {
+@Tag("functional")
+@Tag("security")
+public class XmlConfigurationSecurity {
 
-    @Test(timeout = 5000L)
+    @Test
+    @Timeout(5)
     public void xmlSecurity() throws IOException {
         final LoggerContext context = Configurator.initialize("XmlConfigurationSecurity", "XmlConfigurationSecurity.xml");
         assertNotNull(context.getConfiguration().getAppender("list"));
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlLoggerPropsTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlLoggerPropsTest.java
index 55a6224..b191524 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlLoggerPropsTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/xml/XmlLoggerPropsTest.java
@@ -16,52 +16,41 @@
  */
 package org.apache.logging.log4j.core.config.xml;
 
-import java.util.List;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.apache.logging.log4j.junit.Named;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-
-import static org.hamcrest.Matchers.allOf;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
-/**
- *
- */
-public class XmlLoggerPropsTest {
+import java.util.List;
 
-    private static final String CONFIG = "log4j-loggerprops.xml";
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
 
-    @Rule
-    public final LoggerContextRule context = new LoggerContextRule(CONFIG);
+public class XmlLoggerPropsTest {
 
-    @BeforeClass
-    public static void setupClass() {
+    @BeforeAll
+    static void setupClass() {
         System.setProperty("test", "test");
     }
 
-    @Test
-    public void testWithProps() {
-        final ListAppender listAppender = context.getListAppender("List");
-        assertNotNull("No List Appender", listAppender);
+    @AfterAll
+    static void tearDownClass() {
+        System.clearProperty("test");
+    }
 
-        try {
-            assertThat(context.getConfiguration(), is(instanceOf(XmlConfiguration.class)));
-            Logger logger = LogManager.getLogger(XmlLoggerPropsTest.class);
-            logger.debug("Test with props");
-            logger = LogManager.getLogger("tiny.bubbles");
-            logger.debug("Test on root");
-            final List<String> events = listAppender.getMessages();
-            assertTrue("No events", events.size() > 0);
-            assertTrue("Incorrect number of events", events.size() == 2);
-            assertThat(events.get(0), allOf(
+    @Test
+    @LoggerContextSource("log4j-loggerprops.xml")
+    public void testWithProps(final LoggerContext context, @Named("List") final ListAppender listAppender) {
+        assertThat(context.getConfiguration(), is(instanceOf(XmlConfiguration.class)));
+        context.getLogger(getClass()).debug("Test with props");
+        context.getLogger("tiny.bubbles").debug("Test on root");
+        final List<String> events = listAppender.getMessages();
+        listAppender.clear();
+        assertThat(events, hasSize(2));
+        assertThat(events.get(0), allOf(
                 containsString("user="),
                 containsString("phrasex=****"),
                 containsString("test=test"),
@@ -71,8 +60,8 @@ public class XmlLoggerPropsTest {
                 containsString("test5=test"),
                 containsString("attribKey=attribValue"),
                 containsString("duplicateKey=nodeValue")
-            ));
-            assertThat(events.get(1), allOf(
+        ));
+        assertThat(events.get(1), allOf(
                 containsString("user="),
                 containsString("phrasex=****"),
                 containsString("test=test"),
@@ -82,9 +71,6 @@ public class XmlLoggerPropsTest {
                 containsString("test5=test"),
                 containsString("attribKey=attribValue"),
                 containsString("duplicateKey=nodeValue")
-            ));
-        } finally {
-            System.clearProperty("test");
-        }
+        ));
     }
 }


[logging-log4j2] 02/02: Revert "Introduce annotation for JUnit 5 LCF tests"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit dca3b38e86d45cd73179a07809032b17c91b0f6e
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 13:34:22 2020 -0500

    Revert "Introduce annotation for JUnit 5 LCF tests"
    
    This reverts commit 04fa3783ef5ae60eb17e68c706b6fb2b32623950.
---
 .../junit/LogManagerLoggerContextFactoryRule.java  |  2 +-
 .../log4j/junit/LoggerContextFactoryExtension.java | 31 +++++++---------
 .../log4j/junit/RegisterLoggerContextFactory.java  | 41 ----------------------
 .../logging/log4j/simple/SimpleLoggerTest.java     |  9 ++---
 .../log4j/core/config/TestConfiguratorError.java   |  8 ++---
 5 files changed, 22 insertions(+), 69 deletions(-)

diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/LogManagerLoggerContextFactoryRule.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/LogManagerLoggerContextFactoryRule.java
index 8fe4680..060e553 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/LogManagerLoggerContextFactoryRule.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/LogManagerLoggerContextFactoryRule.java
@@ -24,7 +24,7 @@ import org.junit.rules.ExternalResource;
  * Sets the {@link LogManager}'s {@link LoggerContextFactory} to the given instance before the test and restores it to
  * the original value after the test.
  *
- * @deprecated Use {@link RegisterLoggerContextFactory} with JUnit 5
+ * @deprecated Use {@link LoggerContextFactoryExtension} with JUnit 5
  */
 public class LogManagerLoggerContextFactoryRule extends ExternalResource {
 
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/LoggerContextFactoryExtension.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/LoggerContextFactoryExtension.java
index 7649c79..1131e1b 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/LoggerContextFactoryExtension.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/LoggerContextFactoryExtension.java
@@ -22,32 +22,25 @@ import org.apache.logging.log4j.spi.LoggerContextFactory;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.platform.commons.support.HierarchyTraversalMode;
-import org.junit.platform.commons.support.ModifierSupport;
-import org.junit.platform.commons.support.ReflectionSupport;
 
-import java.lang.reflect.Field;
-import java.util.List;
-
-class LoggerContextFactoryExtension implements BeforeAllCallback, AfterAllCallback {
+/**
+ * JUnit 5 extension that sets a particular {@link LoggerContextFactory} for the entire run of tests in a class.
+ *
+ * @since 2.14.0
+ */
+public class LoggerContextFactoryExtension implements BeforeAllCallback, AfterAllCallback {
 
     private static final String KEY = "previousFactory";
+    private final LoggerContextFactory loggerContextFactory;
+
+    public LoggerContextFactoryExtension(LoggerContextFactory loggerContextFactory) {
+        this.loggerContextFactory = loggerContextFactory;
+    }
 
     @Override
     public void beforeAll(ExtensionContext context) throws Exception {
-        final Class<?> testClass = context.getRequiredTestClass();
-        final List<Field> loggerContextFactories = ReflectionSupport.findFields(testClass,
-                f -> ModifierSupport.isStatic(f) && f.isAnnotationPresent(RegisterLoggerContextFactory.class),
-                HierarchyTraversalMode.BOTTOM_UP);
-        if (loggerContextFactories.isEmpty()) {
-            return;
-        }
-        if (loggerContextFactories.size() > 1) {
-            throw new IllegalArgumentException("More than one static LoggerContextFactory specified in " + testClass.getName());
-        }
         getStore(context).put(KEY, LogManager.getFactory());
-        final LoggerContextFactory factory = (LoggerContextFactory) loggerContextFactories.get(0).get(null);
-        LogManager.setFactory(factory);
+        LogManager.setFactory(loggerContextFactory);
     }
 
     @Override
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/RegisterLoggerContextFactory.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/RegisterLoggerContextFactory.java
deleted file mode 100644
index aa69b1e..0000000
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/RegisterLoggerContextFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-
-package org.apache.logging.log4j.junit;
-
-import org.apache.logging.log4j.spi.LoggerContextFactory;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * JUnit 5 extension that sets a particular {@link LoggerContextFactory} instance for the entire run of tests in a class.
- *
- * @since 2.14.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@Documented
-@Inherited
-@ExtendWith(LoggerContextFactoryExtension.class)
-public @interface RegisterLoggerContextFactory {
-}
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
index 529b811..ac42497 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
@@ -18,16 +18,17 @@ package org.apache.logging.log4j.simple;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.RegisterLoggerContextFactory;
-import org.apache.logging.log4j.spi.LoggerContextFactory;
+import org.apache.logging.log4j.junit.LoggerContextFactoryExtension;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 @Tag("smoke")
 public class SimpleLoggerTest {
 
-    @RegisterLoggerContextFactory
-    static final LoggerContextFactory FACTORY = new SimpleLoggerContextFactory();
+    @RegisterExtension
+    public static final LoggerContextFactoryExtension EXTENSION =
+            new LoggerContextFactoryExtension(new SimpleLoggerContextFactory());
 
     private final Logger logger = LogManager.getLogger("TestError");
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
index efba175..4c5021c 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
@@ -17,17 +17,17 @@
 package org.apache.logging.log4j.core.config;
 
 import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.junit.RegisterLoggerContextFactory;
+import org.apache.logging.log4j.junit.LoggerContextFactoryExtension;
 import org.apache.logging.log4j.simple.SimpleLoggerContextFactory;
-import org.apache.logging.log4j.spi.LoggerContextFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class TestConfiguratorError {
 
-    @RegisterLoggerContextFactory
-    static final LoggerContextFactory FACTORY = new SimpleLoggerContextFactory();
+    @RegisterExtension
+    static final LoggerContextFactoryExtension extension = new LoggerContextFactoryExtension(new SimpleLoggerContextFactory());
 
     @Test
     public void testErrorNoClassLoader() throws Exception {