2012-05-06 86 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