Надежная настройка в POM и из командной строки

#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 . Или в вашем тесте нет соглашения об именовании?