[英]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.