Заставить Maven запускать все тесты, даже если некоторые не пройдены - PullRequest
222 голосов
/ 14 ноября 2010

У меня есть проект с несколькими модулями. Когда все тесты пройдены, тест Maven запускает их все.

Если тесты не пройдены в первом модуле, maven не перейдет к следующему проекту. У меня для testFailureIgnore установлено значение true в настройках Surefire, но это не помогает.

Как мне заставить maven запускать все тесты?

Ответы [ 5 ]

315 голосов
/ 27 сентября 2012

Из документации:

-fae, --fail-at-end Сбой сборки только после; разрешить продолжение всех незатронутых сборок

-fn, --fail-never НИКОГДА не завершать сборку независимо от результата проекта

То есть, если вы тестируете один модуль, вы можете безопасно использовать -fae.

В противном случае, если у вас есть несколько модулей, и , если вы хотите, чтобы все они были протестированы (даже те, которые зависят от модуля с ошибочными тестами), вы должны запустить mvn clean install -fn.
-fae продолжит работу с модулем, который прошел неудачный тест (запустит все остальные тесты), но все зависящие от него модули будут пропущены.

89 голосов
/ 14 ноября 2010

Я только что нашел параметр "-fae", который заставляет Maven запускать все тесты и не останавливаться при сбое.

73 голосов
/ 14 ноября 2010

Можете ли вы протестировать с верным 2.6 и настроить верный с testFailureIgnore=true Или в командной строке:

mvn install -Dmaven.test.failure.ignore=true
29 голосов
/ 24 ноября 2010

Попробуйте добавить следующую конфигурацию для надёжного плагина в ваш pom.xml корневой проект :

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
13 голосов
/ 17 апреля 2014

Быстрый ответ:

mvn -fn test

Работает с вложенными сборками проекта.

...