5

我想设置我的测试日志记录,以便主要抑制日志输出 - 除非测试失败。然后我想要调试输出。

我知道仅修改测试类路径中的 log4j.properties 或仅使调试日志始终处于活动状态以进行测试的手动解决方案-但我不想在控制台中发送带有绿色测试的不必要输出的垃圾邮件。

对于失败的测试,我希望自动构建为我提供调试输出,以防出现一些奇怪的环境问题。

我一直在想应该有一个 appender 可以与一个 junit 规则结合使用,该规则会抑制输出,直到知道测试结果,然后仅在测试失败时才将日志记录推迟到另一个 appender。

我可能自己做这个,但我想知道是否有人以前尝试过,或者是否有更好的解决方案。

4

1 回答 1

0

您可以添加一个观察者,该观察者将日志记录到单独的记录器中。

public class MyUnitTest {

  private static Logger errorLog = Logger.getLogger("ErrorLogger");

  @Rule
  public TestWatcher testWatcher = new TestWatcher() {
    @Override
    protected void failed(Throwable e, Description description) {
        errorLog.debug(description.toString(), e);
        super.failed(e, description);
    }
  };

}

然后只需添加ErrorLogger到您的 log4j 属性

log4j.logger.ErrorLogger=debug, someAppender
于 2014-09-24T11:33:04.617 回答