如何选择要使用 Maven 执行的 JUnit5 标签

2022-09-02 03:01:31

我刚刚将我的解决方案升级到使用 JUnit5。现在尝试为我的测试创建具有两个标记的标记:和 。首先,我使用了下面的 maven 条目来配置要使用默认生成运行的测试。这意味着当我执行时,只有我的快速测试才会执行。我假设我可以使用命令行覆盖它。但是我不知道我会输入什么来运行我的慢速测试....@Fast@Slowmvn 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>

答案 1

您可以通过以下方式使用:

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

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


答案 2

使用配置文件是可能的,但这不是强制性的,因为在maven surefire插件中定义的用户属性分别包含和排除任何JUnit 5标签(它也适用于JUnit 4和TestNG测试过滤机制)。
因此,要执行标记的测试,或者您可以运行:groupsexcludedGroupsslowfast

mvn test -Dgroups=fast,slow

如果要在 Maven 配置文件中定义排除和/或包含的标记,则无需声明新属性来传达它们,并在 maven surefire 插件中将它们关联起来。只需使用和/或由 maven surefire 插件定义和期望:groupsexcludedGroups

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

推荐