Как пропустить тесты на огурец с ошибкой разбора в maven?
Я провожу тесты на огурец с помощью mvn integration-test
, Если мой тестовый каталог содержит тест, который заканчивается Error parsing feature file
, мои следующие тесты не запускаются вообще.
У меня есть 4 файла.feature, один из них содержит неверный шаг (не проанализирован). Если я удаляю этот шаг, я успешно запускаю 4 файла (Tests run: 23, Failures: 2, Errors: 0, Skipped: 3
),
если нет, я получаю следующее сообщение: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.078 sec <<< FAILURE!
, Я хочу, чтобы maven продолжил тестирование после 1 недопустимого файла функций, а не останавливался на первом, поэтому мне нужно что-то вроде Tests run: 24, Failures: 2, Errors: 1, Skipped: 3
(мой непроходимый шаг - последний)
Фрагмент моего pom.xml:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<cucumber.options>${cucumber.options}</cucumber.options>
</systemPropertyVariables>
</configuration>
</plugin>
Вопрос: Как я могу заставить maven продолжить работу с другими функциями огурца после ошибки?
1 ответ
Вы не можете пропустить только ошибки разбора, нет сведений о типе ошибки для выполнения теста.
Однако, исходя из вашего опыта, вы можете получить определенное количество приемлемых сбоев (для продолжения тестирования до конца вашего набора тестов или до определенной приемлемой частоты сбоев), используя skipAfterFailureCount
вариант maven-failsafe-plugin
(maven-surefire-plugin
имеет ту же опцию, если вы используете его).
В качестве альтернативы и с более строгим подходом вы можете настроить сборку Maven таким образом, чтобы она игнорировала сбои во время тестов и продолжала тестировать весь пакет, используя testFailureIgnore
из maven-failsafe-plugin
для его verify
цель или тот же вариант для maven-surefire-plugin
,
Если вы не хотите настраивать их в своем pom.xml
в качестве сборки по умолчанию вы можете делегировать это поведение в профиль maven или использовать соответствующие параметры командной строки:
mvn clean verify -Dmaven.test.failure.ignore=true
Или (использовать первый вариант выше)
mvn clean verify -Dsurefire.skipAfterFailureCount=42
Или (в зависимости от используемого вами плагина)
mvn clean verify -Dfailsafe.skipAfterFailureCount=12
Обратите внимание, что я использовал verify
и не integration-test
как этап, потому что интеграционные тесты должны устанавливать и разбирать контекст / env для интеграции, чтобы правильно выполнить интеграционные тесты, в этом случае вы должны:
- Использовать
maven-failsafe-plugin
а неmaven-surefire-plugin
- Использовать
pre-integration-test,
Интеграция испытанийand
post -gration-test` для правильной настройки, выполнения, очистки фазы интеграционного тестирования