類似於以下內容。有沒有辦法告訴surefire跳過某個包中的測試?
我想跳過我的dao測試的一種方法。試圖避免定義套件的開銷。
隨着CI我希望有一個每晚運行所有測試和另一個5分鐘的SCM輪詢只運行'快速'測試。
mvn -DskipPattern=**.dao.** test
類似於以下內容。有沒有辦法告訴surefire跳過某個包中的測試?
我想跳過我的dao測試的一種方法。試圖避免定義套件的開銷。
隨着CI我希望有一個每晚運行所有測試和另一個5分鐘的SCM輪詢只運行'快速'測試。
mvn -DskipPattern=**.dao.** test
當然,沒問題:
<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>
參考:
(該不包括不能被經由命令行配置,所以如果你想 有條件地打開此行爲,您將不得不定義一個配置文件並在命令行上激活該配置文件)
讓我擴展Sean的答案。這就是你在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
就是這樣。
可以使用命令行排除測試;使用!
來排除。
注意:我不確定但可能需要2.19.1或更高版本的surefire才能正常工作。
例子:
此將不運行TestHCatLoaderEncryption
mvn install '-Dtest=!TestHCatLoaderEncryption'
排除包:
mvn install '-Dtest=!org.apache.hadoop.**'
可以與正濾波器以及被組合;以下將運行0測試:
mvn install '-Dtest=Test*CatLoaderEncryption,!TestHCatLoaderEncryption'
6年後,surefire.excludes仍然不起作用的命令行。 – 2017-02-02 01:16:54