Запустите Junit Suite с помощью команды Maven

У меня есть несколько наборов тестов Junit (SlowTestSuite, FastTestSuite и т.д.). Я хотел бы запустить только определенный набор, используя команду maven. например.

mvn clean install test -Dtest=FastTestSuite -DfailIfNoTests=false

но не работает. Просто не выполняйте никаких тестов. Любые предложения, пожалуйста.

Ответ 1

Я достиг этого, добавив свойство в pom как:

<properties>
    <runSuite>**/FastTestSuite.class</runSuite>
</properties>

и maven-surefire-plugin должны быть:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>${runSuite}</include>
                </includes>
            </configuration>
        </plugin>

поэтому он по умолчанию запускает FastTestSuite, но вы можете запустить другой тест, например. SlowTestSuite с использованием команды maven как:

mvn install -DrunSuite=**/SlowTestSuite.class -DfailIfNoTests=false

Ответ 2

Ключевое слово, которое вы пропустили, - maven-surefire-plugin: http://maven.apache.org/plugins/maven-surefire-plugin/.

Использование:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.1</version>
        <configuration>
          <includes>
            <include>**/com.your.packaged.Sample.java</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

Если вы выполните небольшой поиск при переполнении стека, вы можете найти информацию:

Запуск тестового пакета JUnit4 в Maven с использованием maven-отказоустойчивого плагина Использование категорий JUnit с плагином Maven Failsafe

Кроме того, вы можете определить профиль, например fastTest, который будет запущен путем добавления параметра в строку cmd:

mvn package -PfastTests

Этот профиль также включает некоторые включения.