Принудительный запуск теста @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

Это заставит вас вручную указать тест с помощью аргумента командной строки, если вы хотите его запустить, но оставьте тест в противном случае.