这里有点新手,但我正在尝试使用Maven Failsafe插件在我的Java项目中使用TFS 2015中的Maven任务运行TestNG测试。我最初使用的是Surefire插件但是想要使用Failsafe,并且当根据documentation for TestNG稍微更改代码时,Failsafe插件将运行TestNG测试类而不是测试套件(并且因为我正在使用参数而失败)。当切换回Surefire时,测试作为测试套件运行并通过。
我尝试过不同版本的Failsafe,并没有改变任何东西。有什么我错过了Failsafe需要识别测试套件吗?
<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>
(使用Surefire)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
(的testng.xml)
<?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 -->
答案 0 :(得分:1)
您的配置根本没有为我运行Failsafe,只有Surefire。根据{{3}},我配置了目标:
<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和Failsafe都在mvn verify
上执行测试(并且Failsafe正确传递参数)。如果你想跳过Surefire测试,你可以这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
现在Surefire仍然在mvn verify
上运行,但实际上并没有运行任何测试。我不知道如何完全禁用Surefire,因此欢迎任何建议或改进。
请注意,您的IDE可能仍会直接调用Surefire(NetBeans对我而言)。某些特定于IDE的设置可能会有所帮助。