【发布时间】:2011-05-12 08:17:28
【问题描述】:
这个话题似乎有两种趋势:
单元测试应该记录它们的工作吗?这些附加信息对单元测试报告有帮助吗?或者单元测试只要不失败就应该保持沉默?
我的问题针对的是 Java 单元测试,但其他语言的程序员的输入也可能很有趣。
【问题讨论】:
标签: java unit-testing logging
这个话题似乎有两种趋势:
单元测试应该记录它们的工作吗?这些附加信息对单元测试报告有帮助吗?或者单元测试只要不失败就应该保持沉默?
我的问题针对的是 Java 单元测试,但其他语言的程序员的输入也可能很有趣。
【问题讨论】:
标签: java unit-testing logging
这显然有点主观,但我不明白您为什么要在单元测试中禁用日志记录。
我确实认为您误解了第一个链接帖子;发帖人并没有声称你不应该记录任何东西,他是说通过/失败不应该只是日志中的东西。它应该返回到测试框架。应该是完全独立于普通日志的数据。
我同意他的观点。
除此之外,您仍然可以进行正常的日志记录。无论如何,您在您正在测试(或应该拥有)的课程中都有它。当测试失败时,您可能会在日志中看到一些内容,这将帮助您更快地调试它。我不明白这怎么可能是负面的。
【讨论】:
我在单元测试期间使用了安静和详细的日志记录,我个人更喜欢在每个测试输出一行包含测试名称及其运行方式时使用它。当我知道发生了什么时,我觉得它更有吸引力,尽管我不能说它对我的工作有任何真正的影响。
如果你从控制台运行,我认为彩色输出是一个加分项。
【讨论】:
单元测试真的应该如此简单和专注,以至于测试失败已经记录了问题所在。您无需通读测试用例的日志即可找出答案。
但是,最好记录一大套自动化测试的总结果,这样您就不必遍历所有测试找到那些失败的。很高兴在最后看到一个您可以关注的摘要。
【讨论】:
通常,当您编写测试时,您学到的第一件事就是单元测试不应该连接到任何东西——数据库、文件系统、互联网。无论您在什么环境中工作,单元测试都应该非常快速并且可以工作。如果它连接到某个东西,那么它就是一个集成测试。 我认为使用可能会显着降低单元测试速度的日志框架是违背单元测试理念的。整个想法是,您可以随心所欲地运行成千上万的测试。理想的做法是将您的单元测试套件插入您的保存按钮(这不太合理,但您明白我的意思)。
【讨论】:
我相信,单元测试中不应该有日志记录,而只有断言。主要原因是日志记录隐藏了重要信息,这些信息在日志中只有其作者可见。这是我的博客文章:Logging in Unit Tests, a Bad Practice。
【讨论】:
如果日志框架不允许您启用/禁用日志,那么它就毫无用处。因此,请随意添加日志,只需确保您可以将它们与其他所有内容分开启用/禁用
【讨论】:
测试有断言。如果断言中缺少某些内容,请添加更多断言。日志用于事后调查错误。但是,当您进行单元测试时,您可以自动搜索错误。
如果您想查看日志,这意味着您没有足够的测试用例和检查。添加它们。
【讨论】: