JUnittesting报告使用JavaDoc进行充实

对于客户,我们需要为集成testing生成详细的testing报告,这不仅表明一切都是绿色的,而且testing也是如此。 我的同事和我是懒惰的人,我们不想破解电子表格或文本文件。

为此,我想了一种方法来logging在每个@Test注释方法和每个testing类上使用JavaDoc注释的更复杂的集成testing。 对于testing人员来说,查看哪个要求,Jira门票或testing链接到什么以及testing实际要做什么是一个很好的帮助。 我们也想把这个信息提供给我们的客户。

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

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

还是有另一种select生成奇特的testing脚本? (或者我们应该启动一个OpenSource项目!);-))

更新:我问另一个关于如何添加一个RunListener到Eclipse的问题,让它也在Eclipse中报告时,开始在那里。 使用自定义TestRunnerbuild议的解决scheme是另一种可能的testing结果报告。 看看: 我如何在Eclipse中使用JUnit RunListener?

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

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

RunListener监听testing事件,如testing开始,testing结束,testing失败,testing成功等

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

说明包含应用于testing方法的注释列表,因此使用上面的示例,您可以使用以下方法获取注释TestDoc:

 description.getAnnotation(TestDoc.class); 

并正常提取文本。

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

然后,当然,你可以指定一个自定义的侦听器,使用:

 <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,使用自定义监听器和记者

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

你看过Maven Sure-fire报告吗?

您可以从JUnittesting中生成HTML报告。

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

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

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

我也会推荐log4j http://logging.apache.org/log4j/1.2/manual.html

你可以使用jt-报告一个优秀的testing报告框架。

我已经使用testNG和iText创build了一个程序,它将testing结果输出在一个不错的pdf报告中。 您可以在@Test标签中添加您的testing说明,也可以将其包含在.pdf报告中。 它提供了testing的运行时间,以及整个套件的运行时间。 目前正在使用seleniumtestingwebapps,但这部分可以忽略。 它还允许您在一次运行中运行多个testing套件,如果testing失败,则允许您仅重新运行这些testing,而无需重新运行整个套件,这些结果将附加到原始结果PDF中。 如果您有兴趣,请参阅下面的图片链接到源代码。 我不介意这成为一个开源项目,因为我有一个良好的开端,虽然我不知道如何去做这件事。 这是一个截图 在这里输入图像说明

所以我想出了如何在sourceforge上创build一个项目。 这里是链接sourceforge链接

正如上面提到的,maven绝对是要走的路。它让生活变得非常简单。 你可以用m2eclipse插件很容易地创build一个Maven项目。 一旦完成。 只需运行这些命令:

 cd <project_dir_where_you_have_pom_file> mvn site:site 

这个命令将为你创build样式表。 在同一个目录下运行:

 mvn surefire-report:report 

这将运行testing用例并将输出转换为html。 您可以在“target / site / surefire-report.html”中find输出。

以下是摘录。 正如你所看到的,所有的testing用例(用JUnit编写)都显示在html中。 其他的元信息,如testing用例总数,运行次数,时间等。

由于我无法上传图像,所以我无法显示输出。

你可以更进一步,可以给插件的确切版本使用像

 mvn org.apache.maven.plugins:maven-site-plugin:3.0:site org.apache.maven.plugins:maven-surefire-report-plugin:2.10:report 

也许值得看看“可执行规范”/ BDD工具,如FIT / FitNesse,Concordion,黄瓜,JBehave等。

通过这种做法,您不仅可以正式满足客户的要求,而且可以将透明度提高到一个新的水平。

简而言之,所有这些工具都允许您(或者更好的客户)使用自然语言或表格定义场景,将自然语言结构的绑定定义为真实的代码,并运行这些场景并查看它们是成功还是失败。 其实你会有一个“现场”的规范,这表明已经按照预期工作,什么不是。

看看这些工具的一个很好的讨论: BDD框架的Java之间有什么区别?