自定义TestNG结果xml

时间:2012-05-06 20:00:40

标签: testng

我正在使用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但没有成功。我错过了什么,有人能指出我正确的方向吗?

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 class

@Test
public void test() {
  System.out.println("running my test");
  ITestResult result = Reporter.getCurrentTestResult();
  result.setAttribute("critical", 10);
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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