在Junit测试中断言应用程序日志记录

时间:2018-05-08 11:52:21

标签: logging junit slf4j assert

我们希望编写测试,断言某些内容是作为Application Startup的一部分记录的。我们该怎么做?

1 个答案:

答案 0 :(得分:0)

我会尝试的基本方法是:

  1. 为您的日志记录框架创建一个自定义日志记录附加程序,以确认您期望的内容。
  2. 确保您的JUnit测试与该appender一起运行,可能是它是测试日志配置的一部分,或者可能是在测试开始时动态添加它。
  3. 让JUnit测试运行您的应用程序启动。
  4. 在JUnit测试结束时,检查appender上的某些属性以确保它记录了您所期望的内容,如果没有,则测试失败。
  5. 我认为没有很多内置功能可以帮助您,因此您可能必须自己编写一些此基础结构,除非您可以找到某人的图书馆来帮助您。如果您使用slf4j记录回溯,我写了some code that makes a custom appender to fail a test if an error is logged for a similar question。您可以将它作为在运行特定JUnit测试时如何动态包含appender的起点。 “How to do a JUnit assert on a message in a logger”中还有java.util.Logging和log4j的一些示例。

    通常,日志记录语句不是“核心”功能,只是帮助理解一个过程,因此通常不需要对它们进行单元测试。您可能最好只测试应用程序启动的结果是您期望的结果,而不是单独测试它还会在过程中记录某些内容。据推测,如果它正确启动,它也将运行那里的任何记录。我个人不需要变得更复杂,而不仅仅是检查没有记录错误,因为在那个链接的答案中,但是你可能有更复杂的要求。