在 Maven 中使用测试
Maven在整个构建生命周期内可以运行单元测试和功能测试。默认情况下, 任何在 src/test/resources
路径下的文件都会复制到 target/test-classes
路径中, 同时这些文件在执行测试过程中,也会被包含在 classpath
中. 正因为这样的特性,如果将一个 log4j2-test.xml
文件放到 src/test/resources
目录中, 这会替换掉当前正在使用的 log4j2.xml
或 log4j2.json
配置。因此, 在测试期间可以使用不同的日志配置,而不是当前在产品中使用的配置。
第二种方法是: 在测试类方法中使用 @BeforeClass
注解设置 log4j.configurationFile
的属性,这种方法在 Log4j 2
被大量使用。和第一种方法相比,测试的配置文件可以使用任意文件名。
第三种方法同样在 Log4j 2
中大量使用, 它使用了 LoggerContextRule JUnit
测试规则, LoggerContextRule
提供额外的便于测试的方法. 另外, 这种方法需要添加 log4j-core test-jar
到 test scope
的依赖中.举个例子
public class AwesomeTest {
@Rule
public LoggerContextRule init = new LoggerContextRule("MyTestConfig.xml");
@Test
public void testSomeAwesomeFeature() {
final LoggerContext ctx = init.getContext();
final Logger logger = init.getLogger("org.apache.logging.log4j.my.awesome.test.logger");
final Configuration cfg = init.getConfiguration();
final ListAppender app = init.getListAppender("List");
logger.warn("Test message");
final List<LogEvent> events = app.getEvents();
// etc.
}
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/113870.html