Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven Failsafe没有选择testng测试套件,但Surefire选择了_Java_Maven_Testng - Fatal编程技术网

Java Maven 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>

这里有点新手,但我尝试使用Maven Failsafe插件在我的Java项目中使用TFS 2015中的Maven任务运行TestNG测试。我最初使用的是Surefire插件,但希望改用Failsafe,当根据稍微更改代码时,Failsafe插件将运行TestNG测试类而不是测试套件(失败是因为我使用了参数)。当切换回Surefire时,测试作为测试套件运行并通过

我尝试过不同版本的故障保护,但没有改变任何事情。我是否遗漏了故障保护需要识别测试套件的内容

        <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>