我正在使用TestNG来运行我的测试套件,并通过Jenkins启动测试。我在Jenkins使用TestNG插件。我们的一个要求是所谓的 '关键' 的自定义属性添加到TestNG的-results.xml自定义TestNG结果xml
当前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 programat而不是通过命令行)。我不确定ITestResult.setAttribute在我的情况下是否有用,因为我猜它会在测试级别添加属性,我需要在套件级别添加属性。我也执行了ITestListener
但没有成功。我错过了什么,有人能指引我朝着正确的方向吗?
EDIT1
TestNGRunner类的代码运行TestNG的
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);
}
不应该在测试之后调用.getCurrentTestResult,例如AfterTest注释的方法吗? – djangofan