Junit测试类中的Javadoc?

HDa*_*ave 32 junit javadoc

将Javadoc注释放在junit测试类和方法中是一种最佳实践吗?或者他们认为它们应该如此容易阅读和简单,以至于没有必要提供测试意图的叙述?

Fou*_*pie 37

我在测试中经常使用Javadoc.但是,当您将自己的标记添加到javadoc时,它才真正有用.

这里的主要目标是使测试对于为您的项目做出贡献的其他开发人员而言可理解的.为此我们甚至不需要生成实际的javadoc.

/**
 * Create a valid account.
 * @result Account will be persisted without any errors,
 *         and Account.getId() will no longer be <code>null</code>
 */
@Test
public void createValidAccount() {
    accountService.create(account);
    assertNotNull(account.getId());
} 
Run Code Online (Sandbox Code Playgroud)

接下来我们需要在maven中通知我们添加了新标签的Javadoc插件.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <tags>
                    <tag>
                        <name>result</name>
                        <placement>a</placement>
                        <head>Test assertion :</head>
                    </tag>
                </tags>
            </configuration>             
        </plugin>    
    </plugins>        
</build>
Run Code Online (Sandbox Code Playgroud)

现在剩下要做的就是调用我们的maven插件.

javadoc:test-javadoc (or javadoc:test-aggregate for multi-module projects)
Run Code Online (Sandbox Code Playgroud)

这是一个相当简单的示例,但是当运行更复杂的测试时,不可能通过简单地使用自描述方法名称来描述测试.

  • 你的例子的输出是什么? (4认同)

Mar*_*tin 21

我个人谨慎地使用javadoc评论,因为我发现它们增加了屏幕上的混乱.如果我能以更自我描述的方式命名一个类,函数或变量,那么我将优先考虑一个注释.阅读这个主题的优秀书籍是罗伯特·C·马丁(又名叔叔鲍勃)的" 清洁代码".

我个人的偏好是让课程和方法都自我描述,即

class ANewEventManager {
   @Test
   public void shouldAllowClassesToSubscribeToEvents() {
        /* Test logic here */
   }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的一个优点是在junit输出中很容易看到在浏览代码之前失败的内容.

  • 立即阅读干净的代码.刚刚完成Roy Ohserov的单元测试,他真正强调了单元和集成测试的人类可读性. (2认同)