You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cucumber中仅执行编号为偶数的1000个feature文件?

执行指定编号的Cucumber Feature文件

以下几种方案可以实现仅运行src/test/resources目录下编号为偶数的feature文件:

方案1:利用文件名匹配直接过滤(最简单)

如果你的feature文件命名规则是直接以数字结尾(比如test_2.feature、login_4.feature)或者纯数字命名(2.feature、1000.feature),可以直接通过Cucumber的文件名匹配参数来筛选:

命令行方式

运行Cucumber时指定匹配偶数的文件名模式:

cucumber --glue your.package.path src/test/resources/**/*[02468].feature

注:**表示递归匹配子目录,*[02468]匹配以偶数结尾的文件名部分。如果文件名是纯数字(比如2.feature),可以简化为src/test/resources/**/[02468].feature或src/test/resources/**/*[02468].feature(覆盖多位数的情况)。

Maven配置方式

在pom.xml的cucumber-maven-plugin中添加匹配规则:

<plugin>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-maven-plugin</artifactId>
    <version>7.14.0</version> <!-- 使用你当前的版本 -->
    <configuration>
        <glue>your.package.path</glue>
        <features>src/test/resources/**/*[02468].feature</features>
    </configuration>
</plugin>

方案2:用JUnit 5的@SelectFiles正则匹配

如果你的文件名编号是固定格式(比如feature_0002.feature这种带前置零的),可以用JUnit 5的@Cucumber注解配合@SelectFiles的正则表达式精准匹配:

import io.cucumber.junit.platform.engine.Cucumber;
import io.cucumber.junit.platform.engine.SelectFiles;

@Cucumber
@SelectFiles("src/test/resources/**/feature_(\\d*[02468])\\.feature")
public class RunEvenNumberedFeaturesTest {
}

正则表达式feature_(\\d*[02468])\\.feature会匹配所有以feature_开头、偶数数字结尾、.feature后缀的文件,适配多位数编号(包括0002这种格式)。

方案3:脚本生成待执行文件列表(灵活适配复杂命名)

如果文件名规则不统一,或者需要更灵活的筛选逻辑,可以写个简单脚本提前收集所有偶数编号的feature文件路径,再传给Cucumber执行:

示例Shell脚本(Linux/macOS)

#!/bin/bash
# 收集所有偶数编号的feature文件路径
even_features=$(find src/test/resources -name "*.feature" | grep -E "[0-9]*[02468]\.feature$")
# 运行Cucumber
cucumber --glue your.package.path $even_features

示例Python脚本(跨平台)

import os

def get_even_features():
    even_files = []
    for root, dirs, files in os.walk("src/test/resources"):
        for file in files:
            if file.endswith(".feature"):
                # 提取文件名中的数字部分(假设文件名包含唯一数字编号)
                num = ''.join(filter(str.isdigit, file))
                if num and int(num) % 2 == 0:
                    even_files.append(os.path.join(root, file))
    return even_files

if __name__ == "__main__":
    features = ' '.join(get_even_features())
    # 调用Cucumber命令
    os.system(f"cucumber --glue your.package.path {features}")

运行脚本后,会自动筛选并执行所有符合条件的feature文件。


内容的提问来源于stack exchange,提问作者Tanuja doppalapudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:35:20