背景:
TestNG支持添加您自己的Reporter类,以便修改正在生成的报告或根据需要生成新报告。
但是,JUnit没有这种功能,因此暴力破解方法是编写自己的Runner并生成自己的自定义报告。
但是,我问这个问题是为了找到更好的东西?
基本上,我想向每个执行的方法添加自定义属性。
<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>
所以我的问题是:
JUnit和Gradle如何生成此XML报告?
是否可以修改报告的生成过程,以便在进行最少更改的同时将自定义数据添加到报告中?
答案 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/>
元素内的某处处结束,您也许可以从那里以某种方式使用它。