《Log4j 2 官方文件》Testing in Maven
阿新 • • 發佈:2018-12-23
在 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
@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
logger.warn("Test message");
final List<LogEvent> events = app.getEvents();
// etc.
}
}