1

Я хочу отличить мой блок и интеграционный тест с помощью @category в junit. Я создал два интерфейса с именем UnitTest и IntegrationTests. Я комментирую свои тестовые классы и методы тестирования с помощью @Category (UnitTest.class) и @Category (IntegrationTest.class).maven sure fire plugin not honoring <groups> tag

Я настроил maven sure fire и maven сбойные плагины для моего модуля.

Файл П выглядит примерно так

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/maven-v4_0_0.xsd"> 

<modelVersion>4.0.0</modelVersion> 

<groupId>mygroup</groupId> 
<artifactId>my-parent</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>My Parent Module</name> 
<properties> 
    <skipTests>false</skipTests> 
    <skipITs>true</skipITs> 
</properties> 

<build> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.12</version> 
    <configuration> 
    <skipITs>${skipITs}</skipITs> 
    <groups>com.myproject.IntegrationTest</groups> 
    <includes> 
     <include>**/*.java</include> 
    </includes> 
    </configuration> 

    <executions> 
    <execution> 
     <id>failsafe-integration-tests</id> 
     <phase>integration-test</phase> 
     <goals> 
     <goal>integration-test</goal> 
     </goals> 
    </execution> 
    </executions> 
    </plugin> 

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

    <configuration> 
    <groups>com.myproject.UnitTest</groups> 
    <excludedGroups>com.myproject.IntegrationTest</excludedGroups> 
    <includes> 
     <include>**/*.java</include> 
    </includes> 
    <skipTests>${skipTests}</skipTests> 
    <systemProperties> 
     <property> 
     <name>targetURI</name> 
     <value>${targetURI}</value> 
     </property> 
    </systemProperties> 
    </configuration> 
    </plugin> 
    </plugins> 
</build> 
</project> 

Когда я запустить MVN чистой установки (я ожидать модульные тесты (Maven верного плагина) отдельно для запуска и интеграция тесты (Maven безаварийности) быть пропущены) , который, кажется, происходит хорошо.

Но, Странно, что плагин плагина maven не соблюдает теги, я заканчиваю тесты на запуск, как в категории «Категория» (UnitTest), так и без категорий . Тем не менее, тесты с @IntegrationTest пропускаются.

Я думал, что все тесты, кроме категории @unitTests, будут пропущены.

Я попытался удалить com.myproject.IntegrationTest из конфигурации плагина плагина и тестов с помощью @category (IntegrationTest.class) также начал работать.

Это ошибка в плагине surefire. В соответствии с документацией должны выполняться только тесты с указанной категорией.

Я что-то упустил?

ответ

0

Попробуйте перейти на версию 2.12.1 (или более поздняя версия - 2.15). 2,12 имеет следующую ошибку:

SUREFIRE-832: JUnit categories only work when junit47 provider is explicitly set

Если вы не можете обновить, то явно указать поставщика JUnit см Manually specifying a provider on page Using JUnit.

+0

Поставщик junit установлен в junit47, а также с 2.14.1. –

+0

2.12.1.2.14.x, 2.15, со всеми версиями, я столкнулся с теми же проблемами, в то время как зависимость провайдера surefire-junit47 внутри плагина (явно) также не помогает :( –