我创建了一个类,该类应该创建并执行 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
没有任何作用。这是项目结构:
最佳答案
问题出在您的代码中。
我猜测 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
关于java - 以编程方式创建的 TestNG XML 不执行测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460796/