maven 如何在运行'mvn test'时排除某些junit测试

cbjzeqam  于 2023-04-20  发布在  Maven
关注(0)|答案(1)|浏览(115)

我有一个JUnit测试

@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("/features")
@SelectClasspathResource("/generated")
class NightlyTest {

}

当我运行mvn test时,它会运行/features/generated中的所有cucumber测试
/generated下有成千上万的cucumber测试,它们需要几个小时才能运行。在我们的管道中,我希望能够控制是否包含生成的测试。
如何才能只运行基于mvn命令或环境变量的特定测试?
mvn test -ExcludeGeneratedTests是最好的
如果我将@ExcludeTags("generated")添加到类中,它将排除我用@generated标记的所有测试,这正是我想要的,只是我不知道如何从管道使用的mvn命令中打开和关闭它。
我试过设置一个环境变量EXCLUDE_TAGS=generated并将注解更改为@ExcludeTags("${EXCLUDE_TAGS}"),但它不起作用。我也试过许多其他模拟解决方案,但似乎都不起作用。
如何从mvn命令中包含/排除生成的测试?

q35jwt9p

q35jwt9p1#

您可以使用Maven来包含和排除测试组。例如:

mvn verify -DexcludedGroups="Ignore" -Dgroups="Smoke | Sanity"

这将运行任何标记为Smoke或Sanity的测试,但其中没有标记为Ignore的测试。
这些属性的值是JUnit 5标记表达式,Surefire将把这些表达式传递给JUnit平台passes them to Cucumber

相关问题