我正在尝试以编程方式运行从第一次运行生成的testng-failed.xml。生成的xml具有我在第一次运行中使用的方法选择器标记(beanshell脚本)。
相同的方法选择器也出现在testng-failed.xml中。所以当我运行testng-failed.xml时,它没有给出正确的输出。它按照bean shell配置执行,并且忽略类中的标记。
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)中具有模块案例和客户的所有测试。
但是我不希望所有方法都被执行,因为除Method2之外,其他方法在第一次运行中已经通过。
我如何仅运行Method2?
如果我们从xml中删除标记,则将执行Method2。因此我需要以某种方式告诉testNG忽略
不确定如何从硬盘中存在的物理testng-failed.xml中以编程方式实现这一目标。