2012-05-06 61 views
1

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

不应该在测试之后调用.getCurrentTestResult,例如AfterTest注释的方法吗? – djangofan

回答

1

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

+0

我用我的代码更新了这个问题。在testng-results.xml中,我仍然看不到testng-results.xml中的关键标记。我正在使用testng 6.5.1。我错过了什么?谢谢! – nilesh

+0

我对这里的答案很好奇...... – djangofan