我正在使用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);
}
答案 0 :(得分:1)
您应该在testng-results.xml中看到这些属性,尽管它们将属于自己的一部分,而不是<testng-results>
标记的属性。
答案 1 :(得分:0)
也许设置为@Test(优先级= 0),零的优先级最高(或关键)