java - 以编程方式创建的 TestNG XML 不执行测试用例

标签 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

最佳答案

问题出在您的代码中。

我猜测 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/

相关文章:

java - Spring Query By Example 使用 "OR"

xml - 如何在 Postgresql 中查询 XML 列?

java - 如何在测试用例中使用testng注解?

java - 如何替换数据提供者的硬编码值

Java Spring MVC 返回多个值

java - 在生产中使用 spring boot 有什么缺点?

java - 编码/取消编码基于 2 个不同模式的 2 个不同的类

c# - 在 XML 代码注释中引用泛型类型

java.lang.VerifyError 与 Mockito 1.10.17

java - Java中是否存在内存泄漏