在 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 {@Rulepublic LoggerContextRule init = new LoggerContextRule("MyTestConfig.xml");@Testpublic 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.}} 转载自 并发编程网 - ifeve.com 相关资源:敏捷开发V1.0.pptx