繁体   English   中英

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

[英]How to get Maven to use my TestNG XML file?

**第一:我已经阅读了这里的每篇文章,了解如何执行此操作,我正在遵循这封信的所有说明,包括来自Maven本身的说明。

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

我是Maven的新手,所以请原谅我使用的术语不正确,但是:当我以“目标”的“目标”“运行” 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文件运行测试,而不是在默认模式下运行,在默认模式下Maven只会选择文件名中带有单词“ Test”的任何内容。

这可能是由于Maven Surefire插件的默认包含模式

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

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

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

我不能肯定地说,但是看起来似乎在读取test.xml文件时遇到了一些麻烦(找不到文件,解析,编码问题等),Surefire退回了包含/排除策略。

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

希望这会缩小范围。

组ID不正确。 您在插件中缺少。 它应该是<groupId>org.apache.maven.plugins</groupId>

我认为正在发生的事情是因为Maven默认使用默认的测试阶段配置,而忽略了您的配置。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM