40

我有多个 Junit 测试套件(SlowTestSuite、FastTestSuite 等)。我想使用 maven 命令只运行特定的套件。例如

mvn clean install test -Dtest=FastTestSuite -DfailIfNoTests=false

但它不工作。只是根本没有运行任何测试。请有任何建议。

4

2 回答 2

50

我通过在 pom 中添加属性来实现这一点:

<properties>
    <runSuite>**/FastTestSuite.class</runSuite>
</properties>

和 maven-surefire-plugin 应该是:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>${runSuite}</include>
                </includes>
            </configuration>
        </plugin>

所以这意味着默认情况下它将运行 FastTestSuite 但您可以使用 maven 命令运行其他测试,例如 SlowTestSuite:

mvn install -DrunSuite=**/SlowTestSuite.class -DfailIfNoTests=false
于 2012-08-02T12:08:51.837 回答
5

您错过的关键字是 maven-surefire-plugin :http://maven.apache.org/plugins/maven-surefire-plugin/

用法是:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.1</version>
        <configuration>
          <includes>
            <include>**/com.your.packaged.Sample.java</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

如果您对堆栈溢出进行一些搜索,您可能会找到信息:

使用 maven-failsafe-plugin 在 Maven 中运行 JUnit4 测试套件 使用带有 Maven Failsafe 插件的 JUnit 类别

此外,您可以定义配置文件,如 fastTest,将通过向 cmd 行添加参数来触发:

mvn package -PfastTests

该配置文件也将包含一些内容。

于 2012-08-01T22:05:46.237 回答