maven: как я могу пропустить тест в некоторых проектах с помощью параметров командной строки?



в моем проекте maven у меня есть несколько модулей. Можно ли отключить выполнение модульного теста для некоторых модулей с помощью параметров командной строки?



мой проект занимает около 15 минут, чтобы запустить все модульные тесты. Я хотел бы ускорить общую сборку, запустив только модульные тесты в модуле, над которым я работаю. Я не хочу входить и редактировать каждый отдельный pom.XML для достижения этой цели.



Я попробовал решение, описанное здесь: Могу ли я запустить конкретный тест testng группа через maven? Однако результатом является множество провалов тестирования в модулях, которые я хочу пропустить. Я полагаю, что "группа" - это не то же самое понятие модуля?

767   4  

4 ответов:

для включения и выключения модульных тестов для всего проекта используйте возможность плагина maven Surefire пропускать тесты. Есть недостаток в использовании скиптестов из командной строки. В сценарии многомодульной сборки это отключит все тесты во всех модулях.

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

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

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.9</version>
        <configuration>
          <excludes>
            <exclude>${someModule.test.excludes}</exclude>
          </excludes>
          <includes>
            <include>${someModule.test.includes}</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <properties>
    <someModule.skip.tests>false</someModule.skip.tests>
    <skipTests>${someModule.skip.tests}</skipTests>
    <someModule.test.includes>**/*Test.java</someModule.test.includes>
    <someModule.test.excludes>**/*Test.java.bogus</someModule.test.excludes>
  </properties>

С POM, как указано выше, вы можете выполнять тесты различными способами.

  1. выполнить все тесты (приведенная выше конфигурация включает все **/*тесты.исходные файлы тестов java)
mvn test
  1. пропустить все тесты по всем модули
mvn -DskipTests=true test
  1. пропустить все тесты для конкретного модуля
mvn -DsomeModule.skip.tests=true test
  1. запускайте только определенные тесты для определенного модуля (этот пример включает все **/*IncludeTest.исходные файлы тестов java)
mvn -DsomeModule.test.includes="**/*IncludeTest.java" test
  1. исключить определенные тесты для конкретного модуля (в этом примере исключаются все **/*ExcludeTest.исходный код Java файлы)
mvn -DsomeModule.test.excludes="**/*ExcludeTest.java" test

...и если вы хотите передать параметр Maven release plugin в Hudson / Jenkins, вы должны использовать -Darguments=-DskipTests чтобы заставить его работать.

Если вы хотите использовать профили Maven:

вы можете заставить его работать, делая что-то вроде этого:

Я не знаю, есть ли поддерживаемый параметр командной строки, который делает то же самое.

вы также можете попробовать использовать свойства среды непосредственно, что-то согласно этой странице документа:

т. е. что-то вроде:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
      <skipTests>${moduleA.skipTests}</skipTests>
    </configuration>
  </plugin>

затем с помощью mvn -DmoduleA.skipTests=false test чтобы проверить этот один модуль.

нашел способ исключить из командной строки:

# Exclude one test class, by using the explanation mark (!)
mvn test -Dtest=!LegacyTest
# Exclude one test method 
mvn verify -Dtest=!LegacyTest#testFoo
# Exclude two test methods
mvn verify -Dtest=!LegacyTest#testFoo+testBar
# Exclude a package with a wildcard (*)
mvn test -Dtest=!com.mycompany.app.Legacy*

Это от:https://blog.jdriven.com/2017/10/run-one-or-exclude-one-test-with-maven/

Comments

    Ничего не найдено.