【问题标题】:How does jUnit Task get its informationjUnit Task如何获取其信息
【发布时间】:2015-12-30 11:57:32
【问题描述】:

我知道,如果我想从我的 jUnit 测试中输出 xml,我可以使用 Ant 任务“jUnit”来生成这样的输出。 我想扩展这个生成的 xml 文件中显示的信息量。 我的类文件中有其他信息,我希望这些信息也可以在 XML 文件中使用。

我的问题是:

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

【问题讨论】:

    标签: ant junit


    【解决方案1】:

    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 的自定义格式化程序类,并在 formatter 元素的 classname 属性中提供它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多