【发布时间】:2015-12-03 22:36:42
【问题描述】:
我在 Cucumber 书中读到 Cucumber 功能场景的格式应该是 Gherkin 场景的格式,即: 给定的时间
为了简单起见,我们省略了场景中可能出现的 And 元素。
我经常在我当前的项目中看到几个这样定义的场景: 情景 X 给定-然后-当-然后
这种格式正确吗? Cucumber接受它,但这是一种好习惯吗?
【问题讨论】:
标签: format cucumber bdd gherkin
我在 Cucumber 书中读到 Cucumber 功能场景的格式应该是 Gherkin 场景的格式,即: 给定的时间
为了简单起见,我们省略了场景中可能出现的 And 元素。
我经常在我当前的项目中看到几个这样定义的场景: 情景 X 给定-然后-当-然后
这种格式正确吗? Cucumber接受它,但这是一种好习惯吗?
【问题讨论】:
标签: format cucumber bdd gherkin
我基本同意@orde,但我觉得有必要将这些条款用于特定目的。对我来说,Given 始终是设置测试的一个步骤。这是一个人开始的情况。我建议使用不执行被测软件的步骤定义。
Given I am a registered user
And I am logged in
And I have a product in my shopping cart
什么时候触发测试。这可能不止一步,但这很令人困惑。
When I delete the item from my cart
然后是用于验证预期结果。我用它来检查时间的结果。
Then there are not items in my shopping cart
我认为不同的术语可以帮助读者了解哪个步骤用于哪个目的,而无需阅读步骤定义中的代码。
【讨论】:
Given、When、Then 关键字实际上是同一个方法的别名,所以它们可以互换使用。 Gherkin只是提供了更多人类可读的钩子来编写场景。
就场景中的Given/Then/When/Then 序列而言,这是可行的,但它似乎有点不寻常。我意识到您试图让您的问题保持简单,但这听起来像是使用And 或But 的可能案例。例如:Given/And/When/Then 或 Given/But/When/Then。而FWIW,如果你想避免Given/When/Then/And/But的语义体操,你可以使用*开始一个步骤
【讨论】: