**首先:我已经阅读了这里关于如何执行此操作的每一篇文章,我正在遵循信中的所有说明,包括 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(使用前将#替换为@)