Java Maven Failsafe没有选择testng测试套件,但Surefire选择了
这里有点新手,但我尝试使用Maven Failsafe插件在我的Java项目中使用TFS 2015中的Maven任务运行TestNG测试。我最初使用的是Surefire插件,但希望改用Failsafe,当根据稍微更改代码时,Failsafe插件将运行TestNG测试类而不是测试套件(失败是因为我使用了参数)。当切换回Surefire时,测试作为测试套件运行并通过 我尝试过不同版本的故障保护,但没有改变任何事情。我是否遗漏了故障保护需要识别测试套件的内容Java Maven Failsafe没有选择testng测试套件,但Surefire选择了,java,maven,testng,Java,Maven,Testng,这里有点新手,但我尝试使用Maven Failsafe插件在我的Java项目中使用TFS 2015中的Maven任务运行TestNG测试。我最初使用的是Surefire插件,但希望改用Failsafe,当根据稍微更改代码时,Failsafe插件将运行TestNG测试类而不是测试套件(失败是因为我使用了参数)。当切换回Surefire时,测试作为测试套件运行并通过 我尝试过不同版本的故障保护,但没有改变任何事情。我是否遗漏了故障保护需要识别测试套件的内容 <plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
org.apache.maven.plugins
maven故障保护插件
2.19.1
testng.xml
(带Surefire)
org.apache.maven.plugins
maven surefire插件
2.13
testng.xml
(testng.xml)
您的配置根本没有为我运行故障保护,只有Surefire。根据,我配置了目标:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
现在Surefire仍然在mvn verify上运行,但实际上并不运行任何测试。我不知道如何完全禁用Surefire,因此欢迎提供任何建议或改进
请注意,您的IDE仍然可以直接调用Surefire(NetBeans为我这样做)。某些特定于IDE的设置可能会有所帮助。surefire和failsafe应该共享相同的代码。surefire-2.19.1有效吗?failsafe-2.13失败了吗?Surefire-2.13对我有用,但failsafe-2.13不行。看起来surefire-2.19.1可以正常工作,但故障保护-2.19.1不能。(我还添加了SkipaAfterFailureCount和surefire在故障保护成功时正确失败)。如果我不能让故障保护在不同版本下工作,我现在不确定这是否只是我的问题。您是否注意到,默认情况下,故障保护不会使生成失败(目标
集成测试
),但如果要使生成失败,您必须运行目标验证
,这两种情况似乎都不会对故障保护造成影响。感谢您的详细回复。看起来它仍然在调用该类(@Sachi,您是否直接从命令行调用了mvn verify
?因为问题可能出在您的TFS配置中(就像在我的情况下,NetBeans正在按照自己的意愿行事).您测试时是否有任何测试套件?看起来Failsafe可以为我运行,但出于某种原因,它仍然调用类而不是套件。@Sachi,我只是以您的套件为例,就是这样。我有一个带有单个测试方法的类,我声明了@Parameters
,只是为了检查参数是否传递了好的。你能发布一个MVCE吗?需要的最小完整pom,以及最小的测试类,这样任何人都可以复制粘贴到正确的文件中并运行它吗?还要提到项目目录中所有文件的相对路径。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<parameter name="urlsource" value="https://httpbin.org/get"></parameter>
<test name="Test">
<classes>
<class name="test.java.TestGenericRESTAPI"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>