我正在以编程方式运行TestNG测试。我正在注入多个套件并执行。但是,当我执行以下命令时,testng-results.xml并不包含每个套件的所有结果。我只得到最后一套的结果。有人遇到过同样的问题吗?

            TestNG tng = new TestNG();
            List<XmlSuite> suites = new ArrayList<>();

            for (Deployment deployment : deploymentList) {

            tcList = tlsite.getTestCaseClassList();

                XmlSuite suite = new XmlSuite();
                suite.setName(deployment.getName());
                XmlTest test = new XmlTest(suite);
                test.setName("AutomationTests");
                List<XmlClass> classes = new ArrayList<>();

                for (Object className : tcList){
                    try {
                        classes.add(new XmlClass((String) className));
                    } catch (TestNGException e){
                        log.error("Error occurred while adding the class : " +e.toString());
                    }
                }
                test.setXmlClasses(classes) ;
                suites.add(suite);
            }
            tng.setXmlSuites(suites);
            tng.setOutputDirectory("my-out");
            tng.run();


更新:如果我以以下方式运行它,它将起作用。但我想o动态生成套件。我究竟做错了什么?

            TestNG testng = new TestNG();
            List<String> suites = new ArrayList<>();
            suites.add("../src/test/resources/testng.xml");
            testng.setTestSuites(suites);
            testng.run();


testng.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="suite of suites">
    <suite-files>
        <suite-file path="testng_pattern1.xml" />
        <suite-file path="testng_pattern2.xml" />
    </suite-files>
</suite>

最佳答案

我已经提供了可以按您期望的方式运行的示例,希望参见GitHub。您需要为所有嵌套套件使用childSuite.setParentSuite(parentSuite)为套件设置父套件。

关于testing - 执行多个套件时,XML结果将被覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40232078/

10-12 01:21