2

考虑 JUnit 类中的 JUnit 方法。它有一些测试和一些 logger.info/debug 语句或其他什么。也许您没有登录 Junit 方法,但我这样做了,它为我节省了很多麻烦,因为它可以快速了解某些测试失败的原因。

如果方法结束,我想“擦除”那些日志语句,可能使用 SLF4J

一个简单的实现方法是

logger.tick();

告诉 logger 标记进一步的日志语句。

logger.tack();

擦除所有日志语句直到刻度标志。问题是您无法擦除 Eclipse 控制台上的内容;)。

既然我正在使用连续 JUnit 测试,这将使我的生活更加快乐。

4

1 回答 1

2

我不会对在单元测试中记录日志感到自觉,但我想大多数人已经对单元测试框架中内置的日志记录工具做得很好。但是,如果你想实现这一点,你需要在一个变量中捕获日志(有些人可能会建议 a StringBuilder),然后在测试结束时根据一些死人的开关转储它们(所以如果开关没有击中最后一幕单元测试的目的是转储保留的日志)。

一个示例可能如下所示:

public abstract class LoggedTest extends TestCase {
  protected boolean displayLog;
  protected StringBuilder log;

  public void tick() {
    displayLog = true;
  }

  public void tack() {
    displayLog = false;
  }

  public void log(String msg) {
    log.append(message);
  }

  protected void setUp() {
    displayLog = false;
    log = new StringBuilder();
  }

  protected void tearDown() {
    if(displayLog) {
      System.err.println(log);
    }
  }
}
于 2012-09-21T16:49:00.197 回答