使用Maven从控制台运行指定标签的Cucumber场景失败求助
解决Cucumber7+JUnit5 Maven标签过滤无测试执行的问题
问题根源
使用JUnit5的@Suite注解运行Cucumber测试时,maven-surefire-plugin默认不会将命令行传入的cucumber.filter.tags系统属性传递给Cucumber测试引擎,导致Cucumber无法接收到过滤规则,最终所有场景都被跳过。
解决方案:修改maven-surefire-plugin配置
需要在pom.xml中配置maven-surefire-plugin,明确将Cucumber相关的系统属性传递给JUnit测试平台。具体配置如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.1.2</version> <!-- 推荐使用最新稳定版本 --> <configuration> <!-- 传递cucumber标签过滤参数 --> <systemPropertyVariables> <cucumber.filter.tags>${cucumber.filter.tags}</cucumber.filter.tags> </systemPropertyVariables> </configuration> </plugin> </plugins> </build>
如果需要支持更多Cucumber系统参数(比如cucumber.features、cucumber.glue等),可以添加对应的属性到<systemPropertyVariables>中,或者使用更通用的配置传递所有系统属性:
<configuration> <properties> <property> <name>cucumber.filter.tags</name> <value>${cucumber.filter.tags}</value> </property> <!-- 添加其他需要传递的Cucumber参数 --> </properties> </configuration>
验证
修改配置后,重新执行命令:
mvn test -Dcucumber.filter.tags="@ValidData"
此时应该只会运行标记了@ValidData的场景,不会出现所有测试被跳过的情况。
内容的提问来源于stack exchange,提问作者Mati.M
相关产品推荐
相关产品推荐

