JUnit测试报告丰富了JavaDoc

Ric*_*wig 36 java junit integration-testing automated-tests unit-testing

对于客户,我们需要为集成测试生成详细的测试报告,这些测试报告不仅显示一切都是绿色的,而且还显示测试的内容.我和我的同事是懒惰的人,我们不想破解电子表格或文本文档.

为此,我想到了一种方法,可以使用每个@Test注释方法和每个测试类的JavaDoc注释来记录更复杂的集成测试.对于测试人员来说,查看哪些需求,Jira票证或测试链接到的任何内容以及测试实际尝试的内容都是一个很好的帮助.我们也想向客户提供这些信息.

现在最大的问题是:我们如何将每个方法和每个测试类的JavaDoc放入JUnit报告中?我们使用JUnit 4.9和Maven.

我知道,每个assertXXX()都有一个描述,但我们真的需要一个漂亮的HTML列表作为结果或PDF文档列出所有类和文档,下面是所有@Test方法及其描述,测试时间,结果如果失败,原因.

还是有另一种方法可以生成花哨的测试脚本吗?(或者我们应该在此开始一个OpenSource项目!?;-))

更新: 我问了另一个关于如何向Eclipse添加RunListener以使其在Eclipse启动时也在Eclipse中报告的问题.使用自定义TestRunner的建议解决方案是另一种获得测试结果报告的可能性.看看:如何在Eclipse中使用JUnit RunListener?

Mat*_*ell 22

实现这一目标的一种方法是使用自定义RunListener,但需要注意的是使用注释而不是javadoc会更容易.您需要具有自定义注释,例如:

@TestDoc(text="tests for XXX-342, fixes customer issue blahblah")
@Test
public void testForReallyBigThings() {
    // stuff
}
Run Code Online (Sandbox Code Playgroud)

RunListener 监听测试事件,例如测试开始,测试结束,测试失败,测试成功等.

public class RunListener {
    public void testRunStarted(Description description) throws Exception {}
    public void testRunFinished(Result result) throws Exception {}
    public void testStarted(Description description) throws Exception {}
    public void testFinished(Description description) throws Exception {}
    public void testFailure(Failure failure) throws Exception {}
    public void testAssumptionFailure(Failure failure) {}
    public void testIgnored(Description description) throws Exception {}
}
Run Code Online (Sandbox Code Playgroud)

描述包含应用于测试方法的注释列表,因此使用上面的示例可以使用以下命令获取Annotation TestDoc:

description.getAnnotation(TestDoc.class);
Run Code Online (Sandbox Code Playgroud)

并正常提取文本.

然后,您可以使用RunListener生成所需文件,使用特定于此测试的文本,测试是通过还是失败,还是被忽略,所花费的时间等.这将是您的自定义报告.

然后,在surefire中,您可以使用以下命令指定自定义侦听器:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.10</version>
  <configuration>
    <properties>
      <property>
        <name>listener</name>
        <value>com.mycompany.MyResultListener,com.mycompany.MyResultListener2</value>
      </property>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这是来自Maven Surefire插件,使用JUnit,使用自定义监听器和记者

这个解决方案的缺点是,就回车符和格式化而言,你没有javadoc的灵活性,但它确实具有文档位于一个特定位置的优点,即注释TestDoc.


Pat*_*gee 5

你看过Maven Sure-fire报道吗?

您可以从JUnit测试生成HTML报告.

http://maven.apache.org/plugins/maven-surefire-report-plugin/

我不确定它是如何可定制的.但这是一个很好的起点.

我也知道TestNG(JUnit的替代品)有一些报告生成功能. http://testng.org/doc/documentation-main.html#logging-junitreports

我还建议使用log4j http://logging.apache.org/log4j/1.2/manual.html