《Log4j 2 官方文档》Testing in Maven

在 Maven 中使用测试

Maven在整个构建生命周期内可以运行单元测试和功能测试。默认情况下, 任何在 src/test/resources 路径下的文件都会复制到 target/test-classes 路径中, 同时这些文件在执行测试过程中,也会被包含在 classpath 中. 正因为这样的特性,如果将一个 log4j2-test.xml 文件放到 src/test/resources 目录中, 这会替换掉当前正在使用的 log4j2.xmllog4j2.json 配置。因此, 在测试期间可以使用不同的日志配置,而不是当前在产品中使用的配置。

第二种方法是: 在测试类方法中使用 @BeforeClass 注解设置 log4j.configurationFile 的属性,这种方法在 Log4j 2被大量使用。和第一种方法相比,测试的配置文件可以使用任意文件名。

第三种方法同样在 Log4j 2 中大量使用, 它使用了 LoggerContextRule JUnit 测试规则, LoggerContextRule 提供额外的便于测试的方法. 另外, 这种方法需要添加 log4j-core test-jartest scope 的依赖中.举个例子

  1. public class AwesomeTest {
  2. @Rule
  3. public LoggerContextRule init = new LoggerContextRule("MyTestConfig.xml");
  4. @Test
  5. public void testSomeAwesomeFeature() {
  6. final LoggerContext ctx = init.getContext();
  7. final Logger logger = init.getLogger("org.apache.logging.log4j.my.awesome.test.logger");
  8. final Configuration cfg = init.getConfiguration();
  9. final ListAppender app = init.getListAppender("List");
  10. logger.warn("Test message");
  11. final List<LogEvent> events = app.getEvents();
  12. // etc.
  13. }
  14. }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/113870.html

(0)
上一篇 2021年8月27日
下一篇 2021年8月27日

相关推荐

发表回复

登录后才能评论