我创建了一个应该创建并执行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
没有任何效果。这是项目结构:
答案 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