0

0

如何在 Cucumber + JUnit 中正确运行多个标签(Tags)

心靈之曲

心靈之曲

发布时间:2026-02-10 22:32:40

|

260人浏览过

|

来源于php中文网

原创

如何在 Cucumber + JUnit 中正确运行多个标签(Tags)

本文详解 cucumber 7.x 中使用 @cucumberoptions.tags 运行多标签的语法规则,重点澄清 and 与 or 的逻辑差异、常见误用场景及解决方案,并提供可直接复用的配置示例。

在 Cucumber Java 项目中,通过标签(Tags)对测试用例进行分类和按需执行是核心实践之一。但许多开发者在尝试同时运行多个标签时遇到“无测试执行、进程静默退出(exit code 0)”的问题——这并非环境或版本故障,而是标签表达式逻辑被误解所致。

✅ 正确理解 tags 表达式的布尔逻辑

Cucumber 的 tags 属性接受 Gherkin 标签表达式(Tag Expression),其语法遵循严格的布尔逻辑:

  • @PW and @WM:表示单个 Feature 或 Scenario 必须同时标注 @PW 和 @WM 两个标签(交集)。若没有任何 .feature 文件同时包含这两个标签,则不执行任何测试,控制台无报错但显示 0 tests executed。
  • @PW or @WM:表示只要 Feature 或 Scenario 标注了 @PW @WM 中的任意一个(并集),即被纳入执行范围。这是跨多个业务模块/测试类型批量执行的常用方式。
? 示例验证: features/login.feature 含 @PW features/dashboard.feature 含 @WM → 使用 tags = "@PW or @WM" 可同时运行二者;而 tags = "@PW and @WM" 将匹配失败,导致零执行。

✅ 推荐的 Runner 类配置(Cucumber 7.9.0 + JUnit 4)

import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;

@RunWith(Cucumber.class)
@CucumberOptions(
    features = "src/test/resources",
    glue = "stepdefs", // ⚠️ 注意:glue 应指向 step definition 包路径(如 "stepdefs"),而非 "/"(该写法会导致绑定失败)
    plugin = {
        "pretty",
        "html:target/cucumber-reports.html",
        "json:target/cucumber.json",
        "junit:target/junit-cucumber-reports/Cucumber-junit.xml",
        "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:"
    },
    tags = "@PW or @WM" // ✅ 正确:运行任一标签的场景
    // tags = "@smoke and @regression" // ✅ 仅当同一场景同时有两标签时才生效
)
public class TestRunner {
}

⚠️ 关键注意事项

  • glue 参数必须为合法包路径:glue = {"/"} 是无效写法,会导致步骤定义无法绑定,建议明确指定如 "stepdefs" 或 "com.example.steps"。
  • 空格与大小写敏感:@PW 和 @pw 被视为不同标签;"@PW or@WM"(缺少空格)将解析失败。
  • 支持嵌套逻辑:可组合更复杂表达式,例如:
    tags = "(@smoke or @regression) and not @wip"
  • Maven 命令行覆盖(推荐用于 CI/CD):
    mvn test -Dcucumber.filter.tags="@PW or @WM"

    此方式优先级高于 @CucumberOptions,便于灵活调度。

    CodeGeeX
    CodeGeeX

    智谱AI发布的AI编程辅助工具插件,可以实现自动代码生成、代码翻译、自动编写注释以及智能问答等功能

    下载

✅ 总结

场景 表达式写法 语义
运行属于任一分类的测试 @tag1 or @tag2 并集(最常用)
运行同时满足多条件的测试 @tag1 and @tag2 交集(需同一场景含全部标签)
排除某类测试 not @ignored 差集

务必根据实际标签分布选择逻辑运算符——多数“多标签运行”需求本质是 or,而非直觉上的 and。调试时可通过 --dry-run 模式(添加 dryRun = true 到 @CucumberOptions)快速验证哪些场景会被匹配,避免盲目修改配置。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

447

2023.10.13

java测试工具有哪些
java测试工具有哪些

java测试工具有JUnit、TestNG、Mockito、Selenium、Apache JMeter和Cucumber。php还给大家带来了java有关的教程,欢迎大家前来学习阅读,希望对大家能有所帮助。

306

2023.10.23

Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

20

2025.10.24

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1543

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

236

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

127

2025.10.17

包子漫画网页版入口与全集阅读指南_正版免费漫画快速访问方法
包子漫画网页版入口与全集阅读指南_正版免费漫画快速访问方法

本专题汇总了包子漫画官网和网页版入口,提供最新章节抢先看方法、正版免费阅读指南,以及稳定访问方式,帮助用户快速直达包子漫画页面,无广告畅享全集漫画内容。

47

2026.02.10

MC.JS网页版快速畅玩指南_MC.JS官网在线入口及免安装体验方法
MC.JS网页版快速畅玩指南_MC.JS官网在线入口及免安装体验方法

本专题汇总了MC.JS官网入口和网页版快速畅玩方法,提供免安装访问、不同版本(1.8.8、1.12.8)在线体验指南,以及正版网页端操作说明,帮助玩家轻松进入MC.JS世界,实现即时畅玩与高效体验。

35

2026.02.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号