如何选择使用Maven执行哪些JUnit5标签

时间:2017-02-23 16:49:29

标签: java maven junit junit5

我刚刚升级了我的解决方案以使用JUnit5。现在尝试为具有两个标记的测试创建标记:@Fast@Slow。首先,我使用下面的maven条目来配置使用我的默认构建运行的测试。这意味着当我执行mvn test时,只会执行快速测试。我假设我可以使用命令行覆盖它。但是我无法弄清楚我要进行什么样的慢速测试......

我假设...... mvn test -Dmaven.IncludeTags=fast,slow之类的东西不起作用

<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>

2 个答案:

答案 0 :(得分:8)

您可以这样使用:

<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>2.19.1</version>
            <configuration>
                <properties>
                    <includeTags>${tests}</includeTags>
                </properties>
            </configuration>
        </plugin>
    </plugins>
</build>

这样您就可以从mvn -PallTests test所有测试开始(甚至使用mvn -Dtests=fast,slow test)。

答案 1 :(得分:5)

可以使用配置文件,但这不是强制性的,因为groupsexcludedGroupsmaven surefire plugin中定义的用户属性,分别包含和排除任何JUnit 5标记(并且它也是与JUnit 4和TestNG测试过滤机制配合使用。
因此,要执行标记为slowfast的测试,您可以运行:

mvn test -Dgroups=fast,slow

如果要在Maven配置文件中定义排除和/或包含的标签,则无需声明新属性即可传达它们并在maven surefire插件中进行关联。只需使用maven surefire插件定义和期望的groups和或excludedGroups

<profiles>
    <profile>
        <id>allTests</id>
        <properties>
            <groups>fast,slow</groups>
        </properties>
    </profile>
</profiles>