#java #maven #junit4 #maven-surefire-plugin
#java #мавен #junit4 #maven-верный плагин
Вопрос:
Из Maven Surefire Plugin docs:
Если у вас настроено несколько исполнений в плагине surefire в вашем POM, вы можете захотеть выполнить единственную фазу тестирования по умолчанию:
mvn surefire:test -Dtest=TestCircle
Я не понял, что является приоритетом / переопределением между конфигурацией POM и командной строкой.
У меня есть эти конфигурации плагинов в моем pom.xml
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
</configuration>
</plugin>
Теперь я пытаюсь запустить свои тесты с
mvn test -Dsurefire.includesFile=.PathToincludesFile -Denv=IsProfileValueTag
И я ожидаю, что будут запущены только классы includesFile
, но все тесты IsProfileValueTag
будут запущены.
Комментарии:
1. Удалите зависимость из конфигурации maven-surefire-plugin, чтобы Maven / Surefire обрабатывал правильного поставщика. Добавьте соответствующую зависимость в свой pom-файл. Удалите конфигурацию includes, поскольку она используется по умолчанию. В чем причина переопределения конфигурации в командной строке?
2. @khmarbaise я удалил зависимость из вопроса, потому что это было неуместно.
includes
Конфигурация не является настройкой по умолчанию, по умолчанию включает толькоTest
, см. maven.apache.org/surefire/maven-surefire-plugin/examples /. … Причина в том, что у меня есть скрипт, который во время выполнения решает, какие тесты запускать, и записывает их вincludesFile
3. Не имеет смысла изменять значения по умолчанию (если они заданы по умолчанию или нет). Соглашение о конфигурации. Я не понимаю, почему у вас есть скрипт, который решает, какие тесты запускать? Являются ли эти тесты модульными тестами? Если да, то эти тесты должны выполняться все… в противном случае вы можете сломать код, не зная об этом… Сложнее, чем требуется… Если ваши тесты слишком медленные, распараллеливайте их … используя JUnit Jupiter и т. Д. вы можете просто сделать … если эти тесты действительно являются модульными тестами, если вы не запускаете их на неправильной фазе…
4. Мне жаль сообщать вам, что есть много компаний, которые делают неправильные вещи и не могут изменить существующую ситуацию и начать писать все тесты по правилам.
5. Что, как следствие, создает множество проблем, с которыми они сталкиваются, вместо того, чтобы делать это правильно… но это не помогает (я много знаю о проблемах компаний / людей, которые делают это неправильно)… кроме того, я не говорю писать тесты по книге, но следовать некоторым соглашениям об именах и позволять некоторым инструментам выполнять свою работу, которую они делают очень хорошо в течение очень долгого времени, только некоторые люди думают, что знают это лучше. Кроме того, вы должны использовать документацию, на которую даны ссылки, и не пытаться изменить инструкцию includes . Или в вашем тесте нет соглашения об именовании?