Maven Surefire с различными наборами файлов - PullRequest
5 голосов
/ 25 августа 2011

У меня есть два вида юнит-тестов (не интеграционный тест). Из-за некоторого странного поведения в Spring Security мне нужно сначала запустить все обычные тесты, а затем - тесты безопасности.

Я использую Junit (поэтому я не могу использовать какие-либо группы TestNG).

Итак, я определил два набора правил включения и исключения.

<excludes>
   <exclude>**/*SecurityTest.java</exclude>                  
</excludes>
<includes>
   <include>**/*Test.java</include>
   <include>**/*Tests.java</include>
</includes>

и

<excludes>
</excludes>
<includes>
    <include>**/*SecurityTest.java</include>
</includes>

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

Моя первая попытка состояла в том, чтобы иметь две полные конфигурации maven-surefire-plugin. Но тогда мавен принимает во внимание только последний из них.

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

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


конфигурация с казнями

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <junitArtifactName>junit:junit</junitArtifactName>
        <encoding>UTF-8</encoding>
        <inputEncoding>UTF-8</inputEncoding>
        <outputEncoding>UTF-8</outputEncoding>
        <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -ea</argLine>   
    </configuration>

    <executions>
        <execution>
            <id>normal-tests</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>**/Abstract*.java</exclude>
                    <exclude>**/*_Roo_*</exclude>
                    <exclude>**/*SecurityTest.java</exclude>
                </excludes>
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/*Tests.java</include>
                </includes>
            </configuration>
        </execution>
        <execution>
            <id>security-tests</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>**/Abstract*.java</exclude>
                    <exclude>**/*_Roo_*</exclude>
                </excludes>
                <includes>
                    <include>**/*SecurityTest.java</include>
                </includes>
            </configuration>
        </execution>
    </executions>
</plugin>

1 Ответ

8 голосов
/ 25 августа 2011

Вы не изменили выполнение по умолчанию верного запуска, которое привязано к фазе тестирования в суперпоме, поэтому оно все еще работает со своей конфигурацией по умолчанию.Идентификатор этого выполнения - «default-test».Вам нужно либо переопределить его, чтобы отсоединить его от фазы тестирования, либо просто использовать этот идентификатор для одного из ваших собственных исполнений.

...