为单元测试用例编写Java文档注释


11

在我看来,单元测试用例本身就是代码的文档。我的公司希望我在单元测试用例的顶部编写详细的Java文档注释。是否有必要这样做?你这样写评论吗?


假设测试代码写得很好并且可读性强,则测试代码中此类注释的主要价值就是意图的陈述。这对于代码审阅者(甚至是您自己)可能非常有价值,因为它允许您判断编写的代码是在执行应做的事情,还是在测试应进行的测试。其次,您可以使用JAVADOC之类的系统,甚至是一个简单的脚本,从代码中抓取测试名称和注释,以快速创建有关您所进行的测试以及正在执行的测试的文档。
Chuck van der Linden

Answers:


8

我要做的是JAVADOC评论:

  • 该类,指示哪个单元已经过单元测试(尽管我应该很清楚,因为关于该主题的最佳实践表明,测试用例的名称应该是该类的名称+“ Test”或“ TestCase”)。这是通过{@link XXXClass} JAVADOC注释完成的

  • 方法,指示要测试的方法({@link XXXClass#method1})。有时我需要为一个类的一个方法使用多种测试方法,以正确测试所有路径。当发生这种情况时,我会另外写一行以说明我正在测试的路径(但我从不偏离我的一线约定)

除此之外,没有其他评论。为了吸引他们的注意力,也许您可​​以使用Cobertura之类的东西来生成漂亮的代码覆盖率图形,并使它们以这种方式高兴:-)

补充说明:我指的是单元测试用例,如果我们谈论的是集成测试用例,那么可能确实需要多一行或两行来说明正在发生的事情...



0

Javadoc注释可以在单独的参考文档中提取和格式化,而单元测试则不能。另外,请记住,用语言写的内容可能与实际代码不同,通常您用语言描述的是实际的预期行为。查找错误的方法之一是将文档与实际代码进行比较(如果它们不匹配)-这是一个错误(在两个错误中,有时在两个错误中)。

单元测试用于测试,而不用于文档。使用单元测试作为文档是错误的,不应该这样做。


2
我发现一套很好的单元测试对代码编写非常有帮助。他们提供了有关如何别人的代码的参考实现应该被使用,以证明沿着该代码的行为正确使用这种方式时。
Bill Michell

@Bill-对此不加争论,很有帮助。它不会替代适当的文档。
littleadv

您的文档取决于听众-但在某些情况下,您绝对是正确的。
Bill Michell

1
理想情况下,单元测试不应该是系统的唯一文档,但是在现实世界中,十分之九的项目正在使用遗留代码,在这些遗留代码中拥有任何文档都是幸运的。在这种情况下,相对于可能与实际代码完全不同步的一堆文档,我更喜欢一组良好的运行和通过单元测试。(是的,甚至Javadoc都可以。)
PéterTörök

@PéterTörök是的...我在几位不同的雇主之间迁移,其中一些是非常知名的公司。很多遗留代码。有史以来唯一的单元测试- 编写的单元测试。因此,您非常幸运。不要以为您看到的是随处可见的事情。即使您有一组单元测试...谁说它们是正确的?谁说他们涵盖了应有的条件?谁说预期的结果是什么?您为什么认为单元测试不同步?只是因为他们“通过”?废话。
littleadv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.