Змусити Maven запустити всі тести, навіть якщо деякі не спрацьовують


243

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

Якщо тести не вдаються в першому модулі, maven не продовжить наступний проект. У налаштуваннях Surefire у мене testFailureIgnore встановлено на значення true, але це не допомагає.

Як змусити Maven запустити всі тести?


Яка версія плагіна Maven-surefire?
Паскаль Thivent

Відповіді:


359

З документації Maven Embedder :

-fae, --fail-at-end Тільки провалити збірку після цього; дозволити продовжувати всі будівлі, які не впливають на вплив

-fn, --fail-never НІКОЛИ не провалюйте збірку, незалежно від результату проекту

Тож якщо ви протестуєте один модуль, тоді ви безпечно користуєтесь -fae.

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


1
крім того, ви можете додати -e для cmd, щоб надати деяку інформацію про помилки.
деспот

11
Я просто перевірив варіант --fail-never. Maven не провалить збірку, навіть якщо є помилки компіляції. Якщо я використовую цю опцію на Jenkins, збірка виглядає успішною, навіть якщо в ній багато помилок компіляції. Я віддаю перевагу -Dmaven.test.failure.ignore=trueв цьому випадку і дозволю Дженкінсу проаналізувати доповіді, що надійні.
fuemf5

@wlnirvana Я редагував публікацію зараз за цим посиланням (тому сміливо видаляйте свій коментар ...)
Стів Чемберс

93

Я щойно знайшов параметр "-fae", який змушує Maven запускати всі тести і не зупинятися на збої.


3
На жаль, цей параметр не працює, коли я передаю його TeamCity.
ripper234

4
У мультимодульному проекті модулі, які залежать від модуля, який не вдався до тестів, будуть пропущені. Використовуйте натомість -fn.
hipokito

2
@ ripper234 Ви знайшли спосіб змусити працювати над TeamCity?
Джередрік Демас

86

Чи можете ви протестувати за допомогою 2.6. І будь-яку налаштування testFailureIgnore=true. Або в командному рядку:

mvn install -Dmaven.test.failure.ignore=true

16
IIRC це призводить до того, що вся збірка не виходить з ладу, а не запускає всі тести і не вдається закінчити.
Ondra Žižka

1
Це єдиний варіант, який працював на мене ... Опція "-fae" нічого не робила при тестах
Yoi

38

Спробуйте додати наступну конфігурацію для плагін-підтвердження у ваш 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>

17

Швидка відповідь:

mvn -fn test

Працює з вкладеними проектами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.