kingdutch / cucumber-linter
Cucumber Linter - Cucumber 和 Behat 的静态分析工具
Requires
- php: ^8.0
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 并直接使用。
运行分析器
要分析您的测试文件,请将分析器指向正确的文件或目录。
例如,要分析您的 checkout
和 login
Behat 文件
vendor/bin/cucumber-linter tests/behat/features/capabilities/checkout tests/behat/features/capabilities/login
实施的规则
在此初始版本中,分析器不提供配置要运行的规则或添加规则的方式,但有一个硬编码的规则列表。
当前规则旨在编写针对单一事物进行清晰测试的专注且一致的测试。测试应通过 arrange
、act
、assert
三个阶段。在 arrange
阶段,构建现有(在其他地方测试过)的功能的脚手架。在 act
阶段,我们执行一些用户操作,以触发业务逻辑。在 assert
阶段,我们验证操作与业务逻辑的结果是否符合预期。
场景应编写得易于识别测试的不同阶段。此外,每个阶段只能出现一次。阶段的重复可能表明测试可能不够专注,应将其拆分为多个场景。保持场景专注于测试有限范围,当它们失败时,可以为利益相关者提供最丰富的信息,并减少需要调试以找到原因的工作范围。
需要背景非空
空的 background
不会在测试执行器中引起错误,但它们会给阅读测试的人造成视觉上的干扰,并给测试编写者的意图带来不明确。
需要在背景中的第一步使用 Given
背景提供共享的脚手架,因此它们始终是 arrange
阶段的扩展,因此总是使用 Given
。
需要在背景中的后续步骤以 And 开始
背景提供共享的脚手架,因此它们始终是 arrange
阶段的扩展,所以后续步骤是第一个步骤的一部分,由 And
标识。
需要在背景和场景内的缩进保持一致
这确保了在阅读测试文件时有一个一致的左缩进,以便眼睛跳回。
需要在 When 和 Then 块之前有一个空行
这为测试的不同阶段提供了视觉上的分隔,便于扫描。
需要在场景中的第一步使用 Given
测试的第一步应该是将系统 arrange
到一个已知的工作状态,这是通过 Given
来表示的。
场景中必须按顺序恰好一次出现Given、When和Then
重复某些阶段的信号词表明可能需要将场景拆分。强制执行Given
、When
和Then
的顺序,将强制执行场景中的arrange
(安排)、act
(行动)和assert
(断言)的顺序。
贡献
欢迎任何贡献。Cucumber Linter的源代码对拉取请求开放,位于kingdutch/cucumber-linter-src
。