【问题标题】:TestNG XML created programmatically not executing testcases以编程方式创建的 TestNG XML 不执行测试用例
【发布时间】:2019-06-05 12:47:30
【问题描述】:

我创建了一个应该创建和执行 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");
    }

}

测试版本: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

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

【问题讨论】:

    标签: java xml testng


    【解决方案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

    【讨论】:

    • 在 src/test/java 下添加类时起作用。
    • @NeaguV - 你能接受答案,这样问题就结束了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多