Есть ли способ сказать surefire пропустить тесты в определенном пакете?
Что-то вроде следующего.
Я хотел бы пропустить мои тесты dao в surefire. Попытка избежать накладных расходов на определение апартаментов.
С CI я бы хотел, чтобы каждый вечер проводил все тесты и еще 5-минутный опрос SCM, который запускает только "быстрые" тесты.
mvn -DskipPattern=**.dao.** test
Ответы
Ответ 1
Позвольте мне расширить ответ Шона. Это вы установили в 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
Конечно, никаких проблем:
<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>
Справка:
(Исключения не могут быть сконфигурированы с помощью командной строки, поэтому, если вы хотите условно включить это поведение, вам нужно будет определить профиль и активировать его в командной строке)
Ответ 3
можно исключить тесты с помощью командной строки; используя !
для исключения.
note: Я не уверен, но, возможно, вам понадобится 2.19.1 или более поздняя версия surefire для работы.
примеры:
это не будет работать TestHCatLoaderEncryption
mvn install '-Dtest=!TestHCatLoaderEncryption'
исключить пакет:
mvn install '-Dtest=!org.apache.hadoop.**'
можно комбинировать с положительными фильтрами; followin будет запускать тест 0:
mvn install '-Dtest=Test*CatLoaderEncryption,!TestHCatLoaderEncryption'