如何选择使用 Maven 执行哪些 JUnit5 标签
How to choose which JUnit5 Tags to execute with Maven
我刚刚升级了我的解决方案以使用 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>
你可以这样使用:
<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 test
所有测试开始(甚至可以从 mvn -Dtests=fast,slow test
开始)。
可以使用配置文件,但这不是强制性的,因为 groups
和 excludedGroups
是 maven surefire plugin 中定义的用户属性,分别包含和排除任何 JUnit 5 标记(和它还适用于 JUnit 4 和 TestNG 测试过滤机制。
因此,要执行标记有 slow
或 fast
的测试,您可以 运行 :
mvn test -Dgroups=fast,slow
如果你想在 Maven 配置文件中定义排除的 and/or 包含的标签,你不需要声明一个新的 属性 来传达它们并在 Maven 中建立它们的关联万无一失的插件。只需使用 Maven surefire 插件定义和预期的 groups
和或 excludedGroups
:
<profiles>
<profile>
<id>allTests</id>
<properties>
<groups>fast,slow</groups>
</properties>
</profile>
</profiles>
您可以省略配置文件而只使用属性,这是更灵活的方式。
<properties>
<tests>fast</tests>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<groups>${tests}</groups>
</configuration>
</plugin>
</plugins>
</build>
然后您可以 运行 通过键入 mvn test
进行快速测试,通过键入 mvn test -Dtests=fast | slow
进行所有测试或仅通过键入 mvn test -Dtests=slow
进行慢速测试。当您有更多测试标签时,您还可以通过输入 mvn test -Dtests="! contract"
.
运行 除了所选类型之外的所有测试标签
我刚刚升级了我的解决方案以使用 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>
你可以这样使用:
<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 test
所有测试开始(甚至可以从 mvn -Dtests=fast,slow test
开始)。
可以使用配置文件,但这不是强制性的,因为 groups
和 excludedGroups
是 maven surefire plugin 中定义的用户属性,分别包含和排除任何 JUnit 5 标记(和它还适用于 JUnit 4 和 TestNG 测试过滤机制。
因此,要执行标记有 slow
或 fast
的测试,您可以 运行 :
mvn test -Dgroups=fast,slow
如果你想在 Maven 配置文件中定义排除的 and/or 包含的标签,你不需要声明一个新的 属性 来传达它们并在 Maven 中建立它们的关联万无一失的插件。只需使用 Maven surefire 插件定义和预期的 groups
和或 excludedGroups
:
<profiles>
<profile>
<id>allTests</id>
<properties>
<groups>fast,slow</groups>
</properties>
</profile>
</profiles>
您可以省略配置文件而只使用属性,这是更灵活的方式。
<properties>
<tests>fast</tests>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<groups>${tests}</groups>
</configuration>
</plugin>
</plugins>
</build>
然后您可以 运行 通过键入 mvn test
进行快速测试,通过键入 mvn test -Dtests=fast | slow
进行所有测试或仅通过键入 mvn test -Dtests=slow
进行慢速测试。当您有更多测试标签时,您还可以通过输入 mvn test -Dtests="! contract"
.