有没有办法告诉surefire跳过某个包中的测试?

时间:2010-12-08 16:24:21

标签: maven-2 surefire

如下所示。

我想要一种方法来跳过我的dao测试。试图避免定义套件的开销。

使用CI,我希望每晚有一个运行所有测试和另一个5分钟的SCM调查,只运行“快速”测试。

mvn -DskipPattern=**.dao.** test

3 个答案:

答案 0 :(得分:40)

让我延伸肖恩的回答。这是您在pom.xml中设置的内容:

<properties>
  <exclude.tests>nothing-to-exclude</exclude.tests>
</properties>
<profiles>
  <profile>
    <id>fast</id>
    <properties>
      <exclude.tests>**/*Dao*.java</exclude.tests>
    </properties>
  </profile>
</profiles>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <excludes>
     <exclude>${exclude.tests}</exclude>
    </excludes>
  </configuration>
</plugin>

然后在CI中,你就像这样开始:

mvn -Pfast test

就是这样。

答案 1 :(得分:18)

当然,没问题:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <excludes>
         <!-- classes that include the name Dao -->
         <exclude>**/*Dao*.java</exclude>
         <!-- classes in a package whose last segment is named dao -->
         <exclude>**/dao/*.java</exclude>
      </excludes>
   </configuration>
</plugin>

<强>参考:

(无法通过命令行配置排除,因此如果要有条件地启用此行为,则必须定义配置文件并在命令行上激活该配置文件)

答案 2 :(得分:2)

可以使用命令行排除测试;使用!排除。

注意:我不确定,但可能需要2.19.1或更高版本的万无一失。

示例:

这不会运行TestHCatLoaderEncryption

mvn install '-Dtest=!TestHCatLoaderEncryption'

排除包裹:

mvn install '-Dtest=!org.apache.hadoop.**'

这也可以与正滤波器结合使用。以下将运行0测试:

mvn install '-Dtest=Test*CatLoaderEncryption,!TestHCatLoaderEncryption'

请参阅Maven Surefire docs