Я использую TestNG для запуска своих тестовых наборов, и тесты запускаются через Jenkins. Я использую плагин TestNG в Jenkins. Один из наших требований является добавление пользовательского атрибута с именем 'критическим' для 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 а не через командную строку). Я не уверен, что 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);
}
Не следует ли вызывать .getCurrentTestResult после теста, например, в аннотированном методе AfterTest? – djangofan