如何让 Maven 使用我的 TestNG XML 文件?

2024-02-06

**首先:我已经阅读了这里关于如何执行此操作的每一篇文章,我正在遵循信中的所有说明,包括 Maven 本身的说明。

我已使用 TestNG 将 Eclipse Selenium 项目转换为 Maven 项目。我无法让 Maven 从 Test.XML 文件运行我的测试,而不是在默认模式下运行,在默认模式下它只选取文件名中带有“Test”一词的任何内容...我可以直接执行 test.xml 和所有内容有效,所以我认为我的转换是正确的。由于我是从现有框架进行转换,因此将所有内容切换到默认的“仅获取名为“测试”的内容”所需的工作量是令人望而却步的,因此我希望 SureFire 使用我的 Test.XML 文件。

我是 Maven 新手,所以请原谅我没有使用正确的术语,但是:当我使用 TEST 的“目标”“运行”POM 文件时,它只是忽略我的 test.xml 文件并运行其中包含“test”一词的任何内容,我通过更改名称等验证了这一点...我主要从 Eclipse 运行,几次尝试命令行的结果相同。

这是我的 POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>TestSuite</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>TestSuite</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>src/test/resources/test.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.35.0</version>
        </dependency>
    </dependencies>
</project>

如果您需要更多信息,请告诉我,我会修改,但我的 TestNG 文件实际上只是调用一个测试类,没有多余的装饰,如果我直接将其作为 testNG 测试执行,它就可以工作。其余代码有效,所以我假设不是那样。也许是 Eclipse 中的设置?


我无法让 Maven 从 Test.XML 文件运行我的测试,而不是在默认模式下运行,在默认模式下它只选取文件名中带有“Test”一词的任何内容。

这可能是因为Maven Surefire 插件的默认包含模式 http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html#:

默认情况下,Surefire 插件将自动包含具有以下通配符模式的所有测试类:

“**/Test*.java” - 包括其所有子目录以及以“Test”开头的所有 java 文件名。 “**/*Test.java” - 包括其所有子目录以及所有以“Test”结尾的 java 文件名。 “**/*TestCase.java” - 包括其所有子目录以及以“TestCase”结尾的所有 java 文件名。

而且,如您所知,“套件 XML 文件配置将覆盖包含和排除模式,并运行套件文件中的所有测试。”

我无法确定,但读取 test.xml 文件时似乎存在一些问题(未找到文件、解析、编码问题等),并且 Surefire 会退回到包含/排除策略。

你可以做一个小测试来证明这一点。在“配置”内添加“包含”和/或“排除”部分,并排除除随机类之外的所有类。 如果运行该随机类,则将忽略“suiteXmlFiles”。

希望这能缩小范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Maven 使用我的 TestNG XML 文件? 的相关文章

随机推荐