使用 JavaDoc 扩充 JUnit 测试报告

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

为此,我想到了一种方法来记录更复杂的集成测试,每个@Test注释方法和每个测试类的JavaDoc注释。对于测试人员来说,查看哪个要求,Jira票证或任何与测试相关的内容以及测试实际尝试做什么是一个很好的帮助。我们也希望向客户提供此信息。

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

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

还是有另一种替代方法来生成花哨的测试脚本?(或者我们应该在这个基础上启动一个开源项目!? ;-)

更新:我问了另一个问题,关于如何将RunListener添加到Eclipse中,以便在开始时在Eclipse中报告它。使用自定义TestRunner的建议解决方案是获得测试结果报告的另一种可能性。看看:如何在 Eclipse 中使用 JUnit RunListener?


答案 1

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

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

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 {}
}

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

description.getAnnotation(TestDoc.class);

并像往常一样提取文本。

然后,您可以使用 来生成所需的文件,其中包含特定于此测试的文本,测试是否通过或失败,或者被忽略,所花费的时间等。这将是您的自定义报告。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>

这是来自Maven Surefire插件,使用JUnit,使用自定义侦听器和报告器

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


答案 2

你看过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


推荐