1

我正在使用 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);
}
4

2 回答 2

1

您应该在 testng-results.xml 中看到这些属性,尽管它们将位于它们自己的一部分中,而不是作为<testng-results>标记的属性。

于 2012-05-07T06:41:37.183 回答
0

也许设置@Test (priority=0),零具有最高优先级(或关键)

于 2019-05-23T20:50:51.083 回答