Есть ли способ отделить долго работающие (например, стресс-тесты), чтобы они не запускались по умолчанию в Maven 2?

StackOverflow https://stackoverflow.com/questions/251730

Вопрос

У нас возникла постоянная потребность в том, чтобы я не мог понять, как решить проблему с помощью стандартных инструментов и документации Maven 2.

У некоторых из наших разработчиков есть очень длительные тесты JUnit (обычно стресс-тесты), которые ни при каких обстоятельствах не следует запускать как обычную часть процесса сборки / ночной сборки.

Конечно, мы можем использовать механизм исключения для надёжного плагина и просто добавить их из сборки, но в идеале нам бы хотелось что-то, что позволило бы разработчику запускать их по желанию через Maven 2.

Это было полезно?

Решение

Обычно вы добавляете профиль в свою конфигурацию maven, который выполняет другой набор тестов:

запустите это с установкой mvn -Pintegrationtest

    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

Другие советы

Добавляя к ответу krosenvold , чтобы избежать непредвиденного поведения, убедитесь, что у вас также есть профиль по умолчанию, который по умолчанию активен и который исключает интеграцию, или стресс-тестирование вас хочу запустить в своем специальном профиле.

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

Вам нужно будет создать такой профиль, просто перечислив плагин surefire вне профиля, и он будет переопределен, если его выбрать с помощью:

mvn -P integrationtest clean install

Используйте подключаемый модуль для тестирования интеграции, такой как Thingy для тестирования Super Helpful Integration , чтобы отделить интеграционные тесты (длительные, системные) от модульного теста (пуристы говорят, что максимум 30 секунд для всех истинных модульных тестов) Создайте два Java-пакета для своих модульных тестов и интеграционных тестов.

Тогда не связывайте этот плагин с фазой (нормальный жизненный цикл maven) и запускайте его только тогда, когда он явно вызывается как цель, например: mvn shitty: чистый дерьмо: установить дерьмо: тест

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

Таким образом, ваши обычные разработчики не пострадают, и вы сможете запускать интеграционные тесты по требованию.

Другой вариант - провести стресс-тест, чтобы обнаружить, что он работает в Maven и выполняется только один или два раза. то есть превращается в обычный функциональный тест. Таким образом, вы можете проверить, что код по-прежнему хорош, но долго не запускается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top