1. 程式人生 > >《Log4j 2 官方文件》Testing in Maven

《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. }