我明白如果我想从我的jUnit测试中输出xml,我可以使用Ant任务" jUnit"生成这样的输出。 我想扩展此生成的xml文件中显示的信息量。 我的类文件中还有其他信息,我希望在XML文件中也可以使用。
我的问题是:
答案 0 :(得分:2)
JUnit任务的XML格式化程序在类org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
中实现,该类是在执行JUnit测试期间接收事件的侦听器。例如,当接收到“测试结束”事件时,格式化程序在内存中附加XML元素以进行测试。 Here是源代码的链接。
根据我从代码中读到的内容:
XML的架构在Ant任务的代码中定义。具体是上面提到的类。架构在Spec. for JUnit XML Output中讨论。报告的内容,例如测试名称和类名是从JUnit测试类本身获取的。这是检索测试名称的方法的Javadoc:
JUnit 3.7引入了TestCase.getName(),后续版本的JUnit删除了旧的name()方法。此方法通过反射提供对TestCase名称的访问,该反射应该适用于JUnit 3.7之前和之后的版本。
因为Ant 1.5.1,如果它存在,这个方法将在任何Test实现上调用
"public String getName()"
。由于Ant 1.7还显式检查JUnit4TestCaseFacade。这由junit.framework.JUnit4TestAdapter使用。
该任务不仅格式化输出。它使用上面提到的格式化程序生成所有报告。一些可能有助于扩展格式化程序的帖子:
How do I configure JUnit Ant task to only produce output on failures?
建议的解决方案是编写一个扩展org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
的自定义格式化程序类,并将其提供在classname
元素的formatter
属性中。