Eclipse执行Cucumber测试时未按指定标签运行,而是执行全部标签
看起来你碰到了个挺闹心的Cucumber测试问题!我先理清楚你的情况:你在Eclipse本地调试测试,维护着US和EU两个代码仓库,US仓库的测试完全正常——指定标签后只会运行对应测试用例;但EU仓库不管在运行配置里选哪个标签,都会随机执行所有1到43号标签的测试。你已经尝试过重新克隆EU仓库,但问题依旧,而且因为US仓库没问题,所以暂时排除了Eclipse本身的问题。
给你几个针对性的排查方向,你可以逐一试试:
检查EU仓库的项目全局配置
看看项目里的cucumber.properties、junit-platform.properties这类配置文件,有没有全局设置cucumber.filter.tags参数?如果有的话,它会直接覆盖你在Eclipse运行配置里指定的标签。另外如果是Maven/Gradle项目,也要核对pom.xml或build.gradle的测试任务配置,有没有硬编码标签过滤规则,这也会导致运行配置的设置失效。仔细核对Eclipse运行配置的细节
哪怕你已经看过配置,也再确认下这几点:- 运行配置的「Arguments」标签页,是不是同时在
Program arguments或VM arguments里加了--tags @xxx这类参数?如果和「Cucumber」标签页的设置重复,可能会导致过滤逻辑冲突。 - 「Test」标签页里,是不是误选了「All tests」而不是基于标签的过滤选项?有时候切换配置时容易忽略这个细节。
- 运行配置的「Arguments」标签页,是不是同时在
检查EU仓库的.feature文件标签格式
看看EU仓库里的.feature文件,标签的写法有没有问题?比如标签名是否写错、有没有多余空格,或者标签有没有正确绑定到对应的场景/特性上?另外也可以试试在命令行直接运行测试(比如Maven项目用mvn test -Dcucumber.filter.tags=@你的标签),看看能不能正常过滤,这样能区分是Eclipse配置的问题,还是项目本身的问题。对比US和EU仓库的Cucumber依赖版本
看看两个仓库的Cucumber依赖版本是不是一致?某些旧版本的Cucumber存在标签过滤的已知bug,如果你把EU仓库的Cucumber版本升级到和US仓库一样,说不定就能解决问题。
备注:内容来源于stack exchange,提问作者Agustin Mario Tini

