以编程方式创建的TestNG XML无法执行测试用例

时间:2019-06-05 12:47:30

标签: java xml testng

我创建了一个应该创建并执行testng xml文件的类。

public static void runTestNG_XML() {
    XmlSuite suite = new XmlSuite();
    suite.setName("All_TC");
    XmlTest test = new XmlTest(suite);
    test.setName("All_TC");
    XmlRun xmlRun = new XmlRun();
    xmlRun.onInclude(test.getName());
    List<XmlPackage> packages = new ArrayList<XmlPackage>();
    packages.add(new XmlPackage("testCases.*"));
    test.setXmlPackages(packages);
    List<XmlSuite> suites = new ArrayList<XmlSuite>();
    suites.add(suite);
    TestNG tng = new TestNG();
    tng.setXmlSuites(suites);
    TestListener tla = new TestListener();
    tng.addListener((ITestNGListener) tla);
    tng.run();
}

这将生成下一个XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All_TC">
  <test name="All_TC">
    <packages>
      <package name="testCases.*"/>
    </packages>
  </test> <!-- All_TC -->
</suite> <!-- All_TC -->

在执行时,不会执行测试用例。 测试总数:0,失败:0,跳过:0

如果我将XML作为TestNG套件运行,它将起作用。

注意到的是,当手动运行它时,在控制台中我要进行执行测试之前

[TestNG] Running: C:\Xml_Path\testng_auto.xml

但是使用上面的类运行时,执行开始前需要

[TestNG] Running: Command line suite 

但这可能是因为使用了CMD。

测试:

package testCases;

import org.testng.annotations.Test;

public class Scenario_1 {

    @Test
    public void TestCase_1() {
        System.out.print("test1");
    }

    @Test
    public void TestCase_2() {
        System.out.print("test2");
    }

}

testng版本:6.14.3

谢谢

更新<-------------

我添加了详细级别,并且出现以下错误。

[TestNG]找不到测试。一无所有

我试图将XmlPackage更改为:

test.src.test.java.testCases.*
src.test.java.testCases.*
test.java.testCases.*
java.testCases.*
test.src.test.java.testCases
src.test.java.testCases
test.java.testCases
java.testCases

没有任何效果。这是项目结构:

enter image description here

1 个答案:

答案 0 :(得分:1)

问题出在您的代码中。

我猜想Executor.createXML.java是方法runTestNG_XML()所在的地方。

从屏幕快照中可以看到,该类位于src/main/java中,但是它试图添加的测试类包,即testCases包位于src/test/java中。

您不能让驻留在src/main/java中的Java代码引用驻留在src/test/java中的Java代码。这就解释了为什么TestNG找不到您的测试类,却什么也没运行。

要解决此问题,请将Executor.createXML.java移至src/test/java(或) 将您的包裹testCases移至src/main/java