自定义Junit 4 XML报告

时间:2019-01-23 08:51:26

标签: java gradle junit testng

背景:

TestNG支持添加您自己的Reporter类,以便修改正在生成的报告或根据需要生成新报告。

但是,JUnit没有这种功能,因此暴力破解方法是编写自己的Runner并生成自己的自定义报告。

但是,我问这个问题是为了找到更好的东西?

基本上,我想向每个执行的方法添加自定义属性。

<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>

所以我的问题是:

  • JUnit和Gradle如何生成此XML报告?

  • 是否可以修改报告的生成过程,以便在进行最少更改的同时将自定义数据添加到报告中?

1 个答案:

答案 0 :(得分:1)

  

JUnit和Gradle如何生成此XML报告?

它最终是由Gradle内部类org.gradle.api.internal.tasks.testing.junit.result.JUnitXmlResultWriter生成的。

  

基本上,我想向每个执行的方法添加自定义属性。

<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>
     

[…]   有没有一种方法可以修改报告生成过程,以在进行最少更改的同时将自定义数据添加到报告中?

不幸的是,无法将更多属性添加到<testcase/>元素中。 This code显示了当前如何创建元素及其属性;没有办法参与创建过程。


如果您可以使用hacky解决方案,则可以在测试过程中尝试将自定义数据写入StdOut / StdErr并按如下所示设置the outputPerTestCase property

// (configuring the default `test` task of the `java` plugin here; works with
// any task of Gradle’s `Test` type, though)
test {
    reports {
        junitXml {
            outputPerTestCase = true
        }
    }
}

然后,书面输出至少会在<testcase/>元素内的某处处结束,您也许可以从那里以某种方式使用它。