Исключение тестовой папки из pom не работает - PullRequest
0 голосов
/ 26 июня 2019

У меня 2 комплекта тестирования. Один для тестов Junit, а другой для тестирования дБ. Я хочу выполнить только тестовые случаи db-unit на отдельной фазе, например, сказать "mvn интеграционный тест".

junit test cases folder: bso
db-unit test cases folder: dao

Но когда я запускаю "mvn интеграционный тест", он также автоматически запускает тестовые случаи junit. Поэтому я исключил ту папку с тестовыми примерами junit, которая называется "bso". Но все же он будет запускать тестовые случаи внутри папки bso. Смотрите мой файл POM здесь. Как запустить тестовые случаи ТОЛЬКО в папке "dao"?

     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.0</version>
        <configuration>
            <trimStackTrace>false</trimStackTrace>
        </configuration>
        <executions>
            <execution>
              <id>unit-tests</id>
              <phase>test</phase>
              <goals>
                 <goal>test</goal>
              </goals>
              <configuration>
                  <skip>true</skip>
              </configuration>
           </execution>
           <execution>
              <id>integration-tests</id>
              <phase>integration-test</phase>
              <goals>
                 <goal>test</goal>
              </goals>
              <configuration>
                 <skip>false</skip>
                 <includes>
                   <include>**/dao/**</include>
                 </includes>
                 <excludes>
                    <exclude>**/bso/**</exclude>
                 </excludes>
              </configuration>
           </execution>
        </executions>
    </plugin>

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Обычно вам нужно выполнять модульные и интеграционные тесты с различными плагинами. Модульные тесты обычно выполняются плагином Maven Surefire, а интеграционные тесты - плагином Maven Failsafe.

Почему?У меня в голове две причины:

  • Если интеграционные тесты не пройдены, вы можете не захотеть проваливать сборку (не всегда, но все же).
  • Отчеты о тестах различны (генерируются в разных папках)

Surefire по умолчанию распознает классы тестов, которые заканчиваются на *Test, плагин Failsafe работает с *IT (интеграционные тесты) Поэтому поместите их в разные папки, чтобы они не смешивались, и все готово.

Когда закончите, проверьте отчеты (в целевой папке вы найдете папки surefire-reports и failsafe-reports) и увидите, чтодействительно плагины выбирают правильные тестовые случаи

0 голосов
/ 27 июня 2019

Удаление тега exclude из execution с id как интеграционные тесты приведет к выполнению тестов в пакете dao.

Ниже приведен фрагмент кода для того же:


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <trimStackTrace>false</trimStackTrace>
                </configuration>
                <executions>
                    <execution>
                        <id>unit-tests</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>integration-tests</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>**/dao/**</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

...