How to use JUnit 5 @Tag with IntelliJ and Maven

2019-01-20 17:28发布

问题:

I would like to use the @Tag available in JUnit 5 in order to easily filter my tests.

I have found in this blog input from September 2016 that IntelliJ was not supporting @Tag. Not sure what the current status is though.

Also, I am very new to using Maven but I have tried modifying the POM file in order to filter tests when executing mvn test in a command prompt. No luck.

回答1:

Here's the solution I found: changing the JUnit versions in the POM file from ...

<junit.jupiter.version>5.0.0-M2</junit.jupiter.version>
<junit.vintage.version>4.12.0-M2</junit.vintage.version>
<junit.platform.version>1.0.0-M2</junit.platform.version>

to

<junit.jupiter.version>5.0.0-M3</junit.jupiter.version>
<junit.vintage.version>4.12.0-M3</junit.vintage.version>
<junit.platform.version>1.0.0-M3</junit.platform.version>

allowed Maven to recognize the @Tag.



回答2:

Now it is possible with Intellij IDEA 2018.1, take a look at this answer for details (including screenshot).


Also, you can see Build Support with Maven in JUnit official documentation for a proper configuration of maven-surefire-plugin. The section Filtering by Tags can be especially useful to filter tests by tags.

Example (excluding all tests with the "integration" tag):

...
<build>
    <plugins>
        ...
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <properties>
                    <excludeTags>integration</excludeTags>
                </properties>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-surefire-provider</artifactId>
                    <version>1.2.0</version>
                </dependency>
                ...
            </dependencies>
        </plugin>
    </plugins>
</build>
...