kingdutch/cucumber-linter

Cucumber Linter - Cucumber 和 Behat 的静态分析工具

0.1.4 2024-01-03 14:31 UTC

This package is auto-updated.

Last update: 2024-09-03 15:55:22 UTC


README

Cucumber Linter 主要关注为 Cucumber (.feature) 文件提供一致的格式。

入门

Cucumber Linter 需要 PHP >= 8.0 才能运行。分析器期望您的文件具有 .feature 扩展名。

安装

要开始分析您的 Cucumber/Gherkin 文件,请使用 Composer 引入 Cucumber Linter。

composer require --dev kingutch/cucumber-linter

Composer 将在它的 bin-dir 中安装 Cucumber Linter 的可执行文件,默认为 vendor/bin

您还可以下载 最新的 PHAR 并直接使用。

运行分析器

要分析您的测试文件,请将分析器指向正确的文件或目录。

例如,要分析您的 checkoutlogin Behat 文件

vendor/bin/cucumber-linter tests/behat/features/capabilities/checkout tests/behat/features/capabilities/login

实施的规则

在此初始版本中,分析器不提供配置要运行的规则或添加规则的方式,但有一个硬编码的规则列表。

当前规则旨在编写针对单一事物进行清晰测试的专注且一致的测试。测试应通过 arrangeactassert 三个阶段。在 arrange 阶段,构建现有(在其他地方测试过)的功能的脚手架。在 act 阶段,我们执行一些用户操作,以触发业务逻辑。在 assert 阶段,我们验证操作与业务逻辑的结果是否符合预期。

场景应编写得易于识别测试的不同阶段。此外,每个阶段只能出现一次。阶段的重复可能表明测试可能不够专注,应将其拆分为多个场景。保持场景专注于测试有限范围,当它们失败时,可以为利益相关者提供最丰富的信息,并减少需要调试以找到原因的工作范围。

需要背景非空

空的 background 不会在测试执行器中引起错误,但它们会给阅读测试的人造成视觉上的干扰,并给测试编写者的意图带来不明确。

需要在背景中的第一步使用 Given

背景提供共享的脚手架,因此它们始终是 arrange 阶段的扩展,因此总是使用 Given

需要在背景中的后续步骤以 And 开始

背景提供共享的脚手架,因此它们始终是 arrange 阶段的扩展,所以后续步骤是第一个步骤的一部分,由 And 标识。

需要在背景和场景内的缩进保持一致

这确保了在阅读测试文件时有一个一致的左缩进,以便眼睛跳回。

需要在 When 和 Then 块之前有一个空行

这为测试的不同阶段提供了视觉上的分隔,便于扫描。

需要在场景中的第一步使用 Given

测试的第一步应该是将系统 arrange 到一个已知的工作状态,这是通过 Given 来表示的。

场景中必须按顺序恰好一次出现Given、When和Then

重复某些阶段的信号词表明可能需要将场景拆分。强制执行GivenWhenThen的顺序,将强制执行场景中的arrange(安排)、act(行动)和assert(断言)的顺序。

贡献

欢迎任何贡献。Cucumber Linter的源代码对拉取请求开放,位于kingdutch/cucumber-linter-src