Как заставить jenkins запускать интеграционные тесты только при развертывании в UAT? - PullRequest
0 голосов
/ 14 февраля 2020

Я использую jenkins, и у меня есть staging > qa > uat > master environment set.. Я не хочу, чтобы jenkins запускал какие-либо интеграционные тесты в промежуточных и qa-средах, только для uat и master.

Возможно ли это сделать? Если так, то как? Я имею в виду, следует ли разделять модульные и интеграционные тесты в разных пакетах? Сегодня у меня есть:

src/main/java

src/test/java

1 Ответ

1 голос
/ 14 февраля 2020

Определите интерфейс IntegrationTest

    public interface IntegrationTest {}

И используйте аннотацию @Category от Junit4 для классификации ваших тестов в качестве интеграционного теста.

@Category(IntegrationTest.class)
public class YourTest

Поэтому используйте плагин maven surefire и failsafe для создания групп яичек.

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <excludedGroups>you.package.IntegrationTest</excludedGroups>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <includes>
                    <include>**/*.java</include>
                </includes>
                <groups>you.package.IntegrationTest</groups>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Интеграционный тест будет автоматически исключен из выполнения по умолчанию, т.е. mvn clean пакет. Однако, если вы запустите mvn integration-test, все интеграционные тесты будут запущены.

...