Maven Failsafe没有拿起testng测试套件,但Surefire确实如此

时间:2016-10-04 17:38:43

标签: java maven testng

这里有点新手,但我正在尝试使用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 -->

1 个答案:

答案 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的设置可能会有所帮助。