Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Maven创建和JUnit5标记_Java_Maven_Junit5_Maven Surefire Plugin - Fatal编程技术网

Java 如何使用Maven创建和JUnit5标记

Java 如何使用Maven创建和JUnit5标记,java,maven,junit5,maven-surefire-plugin,Java,Maven,Junit5,Maven Surefire Plugin,是否有一种方法仅使用每个给定标记运行测试?例如,我们可以只运行带有tag1和tag2的测试吗 我们正在使用Maven 3.6.2和Surefire的2.22.2版以及JUnit 5.5.2对许多应用程序API端点运行测试。每个测试至少有3个标签,指定测试类型、应用程序和方法类型。有些人有更多 我们目前正在从命令行运行测试,以使测试人员能够控制每次运行: mvn test -Dgroups=app1,fast 我们遇到的问题是,上面的测试将运行标记为app1或fast的所有测试。结果是运行了几十

是否有一种方法仅使用每个给定标记运行测试?例如,我们可以只运行带有
tag1
tag2
的测试吗

我们正在使用Maven 3.6.2和Surefire的2.22.2版以及JUnit 5.5.2对许多应用程序API端点运行测试。每个测试至少有3个标签,指定测试类型、应用程序和方法类型。有些人有更多

我们目前正在从命令行运行测试,以使测试人员能够控制每次运行:

mvn test -Dgroups=app1,fast
我们遇到的问题是,上面的测试将运行标记为
app1
fast
的所有测试。结果是运行了几十个测试。测试人员的目标是只运行“app1”的“快速”测试

虽然可以使用
excludedGroups
,但在运行之后,这对测试人员没有帮助。此外,我们每天都在添加测试和标签,所以今天有效的东西明天可能不起作用

我们的目标之一是在命令行上启用标记规范,而不需要测试人员编辑POM来运行不同的测试组合。我们希望从命令行指定测试集,而不必在运行之间接触POM。由于测试组合的列表不断增加,我们的POM将变得太大而无法有效管理


使用Surefire是否可以将JUnit5标记与之绑定在一起?

我的做法是设置接口。如果有子组,我只是让接口扩展父组

对于您的情况,似乎您有app1标记和一些快速标记的测试。为app1和扩展app1的fast创建接口。在测试中,您可以添加@Category(app1Fast.class)

调用mvn test-Dgroups=tests.groups.app1Fast时,它将只运行fast标记。如果运行mvn clean test-Dgroups=tests.groups.app1,它将运行app1中的所有内容

另外,您可以告诉我创建了一个名为groups的包来添加接口

另一方面,接口将为空-

public interface app1 {}

public interface app1Fast extends app1{}
听起来您将有多个应用程序--app1、app2等

public interface app2{}
public interface app2Fast extends app2{}
可能还有其他方法,但这很简单

调用app1测试app1中的所有内容,或调用app1Fast仅测试app1的快速测试。app2也一样


希望能有所帮助。

在Maven Surefire/Maven Failsafe中,您可以定义为您已经提到的,但您可以为JUnit Jupiter(又名JUnit 5)定义如下:

mvn test -Dgroups="app1&fast"

有关更多详细信息,请查看文档


顺便说一句:我建议升级到or的最新版本。

我认为你的答案与JUnit4有关,而问题是关于JUnit5的。JUnit5ˋs标记是基于字符串的,而不是基于类的。这是基于JUnit4的。啊!我完全错过了一些方法。我们在使用故障保护版本3.0.0-M3的相同语法时遇到了问题。我们将进一步调查。
mvn test -Dgroups="app1|fast"