Я пытаюсь запустить testng-failed.xml, сгенерированный при первом запуске, программным способом. В сгенерированном xml есть тег выбора метода (beanshell scripting), который я использовал в своем первом запуске.
Тот же селектор методов также появляется в testng-failed.xml. Так что, когда я запускаю testng-failed.xml, он не дает правильного вывода. Он выполняется в соответствии с конфигурацией оболочки компонента и игнорирует тег внутри классов.
TestNG testNG = new TestNG();
List<String> failedXMLsList = new ArrayList<String>();
failedXMLsList.add(result_Dir + "/testng_results/run_" + prevRunCount + "/testng-failed.xml");
testNG.setTestSuites(failedXMLsList);
testNG.run();
Ошибка XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="1" name="Failed suite [TestSuite]" parallel="methods">
<test thread-count="1" name="TestSet(failed)" parallel="methods">
<method-selectors>
<method-selector>
<script language="BeanShell">
<![CDATA[String module=method.getAnnotation(org.comp.Runner1.TestDetails.class).module();String input="[case, customer]";return input.contains(module)]]>
</script>
</method-selector>
</method-selectors>
<classes>
<class name="org.comp.tests.Case.Test2">
<methods>
<include name="Method2"/>
</methods>
</class>
</classes>
</test>
</suite>
Конфигурация сверху - выполняет все тесты из класса (org.comp.tests.Case.Test2), который имеет регистр модуля и клиента.
Но я не хочу, чтобы все выполнялись, поскольку другие уже прошли первый запуск, кроме метода 2.
Как мне запустить только Method2?
Если мы удалим тег из xml, будет выполнен Method2. Так или иначе, я должен сказать testNG игнорировать
Не уверен, как достичь этого программно из физического testng-failed.xml, присутствующего на жестком диске.