java - 仅当 JUnit 测试方法失败时,如何使用 SLF4J 记录 Java 中的语句?

标签 java logging junit

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

如果方法到达末尾,我想“删除”这些日志语句,可能使用 SLF4J

实现这一点的一个简单方法是

logger.tick();

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

logger.tack();

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

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

最佳答案

我不会对在单元测试中进行日志记录感到不自在,但我想大多数人已经可以使用单元测试框架中内置的日志记录工具了。但是,如果您想实现这一点,则需要在变量中捕获日志(有些人可能建议使用 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);
    }
  }
}

关于java - 仅当 JUnit 测试方法失败时,如何使用 SLF4J 记录 Java 中的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534657/

相关文章:

java - 如何比较两个不同大小的数组列表并检查元素的顺序

java - Log4j2 将记录到控制台,但不记录到 log.txt 文件

python - 找不到记录器 "xhtml2pdf"的处理程序

java - 在 Apache Log4J 中,有没有一种方法可以简单地即时创建多个日志文件,而不是附加到一个日志文件?

gradle - 找不到ParameterizedTest和ValueSource

java - 无限( eclipse )自移动测试以来没有找到上次更改的相关测试

java - Spring 事务参数化测试和 Autowiring

java - ArrayIndexOutOfBoundsException 原因未知

java - 如何测试接收到的输入是否不是整数(不使用else语句)

java - AWS队列空指针