我正在使用 TestNG 来运行我的测试套件,并且测试是通过 Jenkins 启动的。我在 Jenkins 中使用 TestNG 插件。我们的要求之一是向 testng-results.xml 添加一个名为“critical”的自定义属性
当前 testng-result.xml
<testng-results skipped="0" failed="3" total="5" passed="2">
......
</testng-results>
预期的 testng-result.xml
<testng-results skipped="0" failed="3" total="5" passed="2" critical="2">
......
</testng-results>
我在@Test 下面尝试只是为了查看 setAttribute 是如何工作的,但它没有向 testng-results.xml 中的测试添加任何属性(不确定我缺少什么,我正在以编程方式运行 TestNG,而不是通过命令行)。我不确定 ITestResult.setAttribute 在我的情况下是否有用,因为我猜它会在测试级别添加属性,我需要在套件级别添加属性。我也实施ITestListener
了,但没有成功。我错过了什么,有人能指出我正确的方向吗?
编辑1
通过代码运行 TestNG 的TestNGRunner 类
XmlSuite suite = new XmlSuite();
suite.setName("Custom Report");
XmlTest test = new XmlTest(suite);
test.setName("customreport");
classes = new ArrayList<XmlClass>();
String [] runSuites = {"com.test.Testing"};
for(String asuite:runSuites)
classes.add(new XmlClass(asuite));
test.setXmlClasses(classes);
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
com.test.Testing 类
@Test
public void test() {
System.out.println("running my test");
ITestResult result = Reporter.getCurrentTestResult();
result.setAttribute("critical", 10);
}