Junit 5 выполняет тесты в сборке maven, даже если не аннотирован - PullRequest
0 голосов
/ 02 октября 2019

При подготовке релиза на maven ( release: prepare ) я прокомментировал некоторые тесты, которые я не хочу выполнять, но они все равно выполняются, даже полностью удаляя@Test аннотации к методу.

ПРИМЕЧАНИЕ. Учтите, что опция Skip Test игнорируется во время выпуска maven

Сборка была выполнена в Eclipse в следующей среде :- Apache Maven 3.5.4 внешняя среда выполнения (не та, что встроена в Eclipse)- Java JDK 1.8.0_151- maven-compiler-plugin 3.0- maven-release-плагин 2.5.3- junit-jupiter-api 5.5.2- junit-jupiter-engine 5.5.2

Обычно, чтобы пропустить тест, я комментирую только аннотацию:

    //@Test
    public void testIwantToSkip() {
        assertTrue(true);
    }

На данный момент я нашел единственный способ пропустить тест:чтобы прокомментировать весь метод, но я ожидаю, что он будет пропущен, только комментируя аннотацию, как это произошло в Junit 4.

ОБНОВЛЕНИЕ Я также пытался использовать аннотацию @Disable, к сожалению, безрезультатно. Образец:

@Test
@Disabled
public void testAuditMapper() {
    ....
}

ВОЗМОЖНОЕ РЕШЕНИЕ После нескольких тестов и благодаря подсказке Каямана я выяснил, что в сборке Maven аннотации полностью игнорируются, будут выполняться только методы, начинающиеся с "test", остальные будут полностью игнорироваться, независимо от аннотаций. Например:

@Test
public void someThing() {
    // will NOT be executed....
}

@Disabled
public void testSomeThing() {
    // will be executed....
}

ОПРЕДЕЛЕНИЕ РЕШЕНИЯ В разделе сборки моего pom плагин surefire не был указан, поэтому полученный pom использовал версию этого плагина 2.12.4. Добавив это в раздел сборки:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M3</version>
</plugin>

все работает как положено. Спасибо @asa за подсказку.

Ответы [ 3 ]

1 голос
/ 02 октября 2019

Попробуйте использовать аннотацию @Ignore.

@Test
@Ignore("optional comment explaning the reason")
public void testIwantToSkip() {
    assertTrue(true);
}
0 голосов
/ 02 октября 2019

Если у вас возникла проблема во время выпуска: выполните цель, вы не сможете изменить свой класс Java. Обычно цель выполнения принимает класс, зафиксированный в вашем SCM во время выпуска: подготовительная фаза. На этом этапе вы можете отключить все тесты во время этапа выполнения или откатить коммиты из цели подготовки и использовать функции условного тестирования Junit5 для определения условий их выполнения.

ОБНОВЛЕНО Решение:

В проекте maven использовалась версия плагинов surefire по умолчанию (используемая для модульных тестов), а не более поздняя, ​​которая решает некоторые проблемы с JUnit 5.

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>3.0.0-M3</version>
</plugin>

Примечание: использование следующихПлагин очень удобен для обеспечения того, чтобы проект использовал самую последнюю версию зависимостей, но, что наиболее важно, последние версии сборки:

https://www.mojohaus.org/versions-maven-plugin/

0 голосов
/ 02 октября 2019

Относительно вашей заметки:

Для плагина релиза вам нужно косвенно указать все опции для внутренней сборки, заключив их в

-Darguments="..."
...