Search code examples
javamavenjunitjunit5

How to choose which JUnit5 Tags to execute with Maven


I have just upgraded my solution to use JUnit5. Now trying to create tags for my tests that have two tags: @Fast and @Slow. To start off I have used the below maven entry to configure which test to run with my default build. This means that when I execute mvn test only my fast tests will execute. I assume I can override this using the command line. But I can not figure out what I would enter to run my slow tests....

I assumed something like.... mvn test -Dmaven.IncludeTags=fast,slow which does not work

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <properties>
            <includeTags>fast</includeTags>
            <excludeTags>slow</excludeTags>
        </properties>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.0.0-M3</version>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.0.0-M3</version>
        </dependency>
    </dependencies>
</plugin>

Solution

  • You can use this way:

    <properties>
        <tests>fast</tests>
    </properties>
    
    <profiles>
        <profile>
            <id>allTests</id>
            <properties>
                <tests>fast,slow</tests>
            </properties>
        </profile>
    </profiles>
    
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M5</version>
                <configuration>
                    <groups>${tests}</groups>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    This way you can start with mvn -PallTests test all tests (or even with mvn -Dtests=fast,slow test).