jUnit Task如何获取其信息

时间:2015-12-30 11:57:33

标签: ant junit

我明白如果我想从我的jUnit测试中输出xml,我可以使用Ant任务" jUnit"生成这样的输出。 我想扩展此生成的xml文件中显示的信息量。 我的类文件中还有其他信息,我希望在XML文件中也可以使用。

我的问题是:

  • xml文件中的信息来自哪里?
  • 是来自特定jUnit运行者类的信息 用于运行测试吗?
  • jUnit任务是否仅格式化收到的信息或是否格式化 自己生成信息?
  • jUnit Ant任务是否会更改收到的信息? (所以它会 只显示具体信息并过滤掉我想要的一切 添加)

1 个答案:

答案 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?

    Custom JUnit Report?

    建议的解决方案是编写一个扩展org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter的自定义格式化程序类,并将其提供在classname元素的formatter属性中。