Kum*_*ham 5 java junit testng gradle
背景:
TestNG 支持添加您自己的 Reporter 类,以便根据需要修改正在生成的报告或生成新报告。
但是,JUnit 没有这样的功能,因此一种蛮力的方法是编写您自己的 Runner,然后生成您自己的自定义报告。
但是,我问这个问题是为了寻找是否有更好的东西?
基本上,我想为每个执行的方法添加自定义属性。
<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
这个 XML 报告是如何由 JUnit 和 Gradle 生成的?
有没有办法修改这个报告生成过程,在做最小更改的同时将自定义数据添加到报告中?
\n\n\nJUnit 和 Gradle 是如何生成这个 XML 报告的?
\n
它\xe2\x80\x99最终由Gradle内部类生成org.gradle.api.internal.tasks.testing.junit.result.JUnitXmlResultWriter。
\n\n\n基本上,我想为每个执行的方法添加自定义属性。
\n\nRun Code Online (Sandbox Code Playgroud)\n\n<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>\n[\xe2\x80\xa6]\n 有没有办法修改报告生成过程,以在进行最小更改的同时将自定义数据添加到报告中?
\n
不幸的是,无法向<testcase/>元素添加更多属性。此代码显示当前如何创建元素及其属性;无法参与该创建过程。
如果您可以接受一个 hacky 解决方案,那么您可以尝试在测试期间将自定义数据写入 StdOut/StdErr 并按如下方式设置属性:outputPerTestCase
// (configuring the default `test` task of the `java` plugin here; works with\n// any task of Gradle\xe2\x80\x99s `Test` type, though)\ntest {\n reports {\n junitXml {\n outputPerTestCase = true\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后,写入的输出至少会出现在元素内的某个位置<testcase/>,您也许可以从那里以某种方式使用它。