如何在maven中的集成测试目标中运行单个测试

Jal*_*esh 42 integration-testing maven-2 maven-surefire-plugin

我们为maven中的集成测试阶段生命周期定义了数百个测试,并且需要很长时间才能完成.

我想要做的只是运行一个测试integration-test.我试过做:

mvn -Dtest=<my-test> integration-test
Run Code Online (Sandbox Code Playgroud)

但这不起作用.将-Dtest只运行在单元测试目标测试,而不是集成测试阶段.我试过了-Dintegration-test=<my-test>,但是被忽略了.

有没有办法做到这一点 ?


我的配置是:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <executions> 
        <execution> 
            <id>surefire-it</id> 
            <phase>integration-test</phase> 
            <goals> 
                <goal>test</goal> 
            </goals> 
            <configuration> 
                <excludes> 
                    <exclude>none</exclude> 
                </excludes> 
                <includes>
                    <include>**/api/**</include> 
                </includes> 
    ..... 
Run Code Online (Sandbox Code Playgroud)

A L*_*Lee 35

如果您正在使用Maven failsafe插件,则可以通过将it.test属性设置为完全限定的测试类名来运行单个集成测试:

mvn -Dit.test=your.TestCase verify
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅failsafe插件文档.

  • 针对 mvn 3.2.5、插件 2.18 进行了验证。运行一个集成测试: mvn integration-test -Dit.test=MyClassIT 然而,这也运行单元测试: mvn verify -Dit.test=MyClassIT (2认同)
  • 请注意,这可能仍会运行单元测试。要关闭单元测试的执行,请添加-Dtest = foo -DfailIfNoTests = false(假设foo不存在),请参见/sf/ask/462864111/但允许集成测试。 (2认同)

Lyl*_*yle 26

故障安全文档将有指定的测试,如下所示:

mvn -Dit.test=BrokenIT verify
Run Code Online (Sandbox Code Playgroud)

但是,-Dit.test似乎不再起作用了.相反,用于指定Surefire测试的相同参数显然也适用于Failsafe.例如:

mvn -Dtest=WorksIT verify
Run Code Online (Sandbox Code Playgroud)

我已经提交了一个错误(编辑:在2.12中被关闭为"无法重现")以更正文档.


Fan*_*hen 6

只需使用 testNG 添加-DfailIfNoTests=false适合我的作品即可。像这样的东西:

mvn integration-test -Dtest=aITest -DfailIfNoTests=false
Run Code Online (Sandbox Code Playgroud)


Jam*_*ery 2

我不确定 JUnit,但对于 TestNG,策略是定义一个仅包含一个测试的套件 XML 文件,然后在 POM 中配置 Surefire 插件以仅运行该测试。在你的 POM 中,你会有类似这样的内容(免责声明,这未经测试):

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
      <execution>
        <phase>integration-test</phase>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>single-test.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

要配置套件文件,请参阅http://testng.org/doc/documentation-main.html