Принудительный запуск теста @Ignore'd JUnit с использованием командной строки Maven
У меня есть тест JUnit с атрибутом @Ignore, например -
public class HealthCareGov
{
@Test
@Ignore
public void performancetest()
{
// stuff
}
}
В большинстве IDE (например, IntelliJ) я могу принудительно запустить этот тест, выбирая имя метода, даже если есть атрибут @Ignore. Я предполагаю, что Eclipse также позволяет это?
Однако, когда я пытаюсь сделать то же поведение в Maven, выполнив следующее -
mvn -Dtest=HealthCareGov#performancetest test
Похоже, что Maven пропускает тест. Это вывод -
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running HealthCareGov
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.032 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1
Какую командную строку Maven можно использовать для принудительного выполнения этого теста для воспроизведения поведения, которое создает моя IDE? Изменение исходного кода Java не является вариантом.
Ответы
Ответ 1
Это можно добавить к тесту.
@IfProfileValue(name="test-profile", value="IntegrationTest")
public class PendingChangesITCase extends AbstractControllerIntegrationTest {
...
}
Чтобы выбрать те тесты, которые нужно выполнить, просто добавьте значение в профиль для выполнения тестов интеграции.
<properties>
<test-profile>IntegrationTest</test-profile>
</properties>
Кроме того, вы можете использовать командную строку для установки переменной тестового профиля:
mvn -Dtest-profile=IntegrationTest
Ответ 2
Вместо того, чтобы переопределять аннотацию @Ignore
, я сделал следующее:
- Назовите свой тест, который вы хотите запустить только из командной строки за пределами стандартной номенклатуры тестового пробега maven (surefire или failsafe). Это гарантирует, что ваш тест не будет получен при обычном выполнении теста жизненного цикла maven.
- Запишите свой тест как обычно, чтобы включить аннотации для вашей рамки в методах тестирования.
-
Когда вы хотите запустить свой тест, просто включите его вручную, подав его в качестве параметра для бегуна.
-Dtest=Foo # for surefire
-Dit.test=Foo # for failsafe
Это заставит вас вручную указать тест с помощью аргумента командной строки, если вы хотите его запустить, но оставьте тест в противном случае.