黄瓜订购给定,何时,然后(给定,何时,然后,何时,然后)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黄瓜订购给定,何时,然后(给定,何时,然后,何时,然后)相关的知识,希望对你有一定的参考价值。

作为一个端到端的自动化测试程序,我一直认为,Given,When,Then语句(在使用Cucumber时包含在Gherkin语言中)应该只出现在1.给定,2。当时,3。然后。

即测试不应该遵循,例如,给定,何时,然后,何时,然后。而应该遵循Given,When,Then only。

这种假设的原因在于仅测试应用程序的一个区域的单个测试。

但是,我注意到网上的一些小黄瓜示例,它们有时会使用以下顺序:给定,何时,何时,然后。

有人知道在写完一篇文章之后回到Whens是否可以接受最佳实践?我很欣赏测试仍然有效,只是想知道这是好事还是坏事。

答案

尽管可以用这种方式编写场景,但这不是最佳实践。我一个人犯了这个错误,它可能会导致报告和维护方面的问题。

一个原因是When声明了一个动作,Then验证了该动作的结果。有时 - 然后两次违背场景的个别行为。

对于阅读场景的人来说也会让人感到困惑:)

这是关于这个的一点点post

另一答案

语法可互换;语言不同

Gherkin syntax目前包含六个用于描述功能步骤的关键字:

  1. Given
  2. When
  3. Then
  4. And
  5. But
  6. *

关键字用于人类消费和易于传达业务逻辑。然而,小黄瓜语言本身将关键词视为可互换的符号,所以你可以像语法(从小黄瓜的角度)写出折磨的英语,如:

但持有1美元 然后又多了一美元 我拥有两美元的所有权。

这是完全有效的小黄瓜,但数钱的可怕代表。那么,如果所有的单词都是可以互换的,那为什么会有这么多呢? wiki非常清楚,它们提供了一系列约定,以便以更自然的方式进行交流,而wiki甚至提供了一些关于如何区分单词的例子。维基还特别说:

黄瓜在技术上并没有区分这些...... [种类]的步骤。但是,我们强烈建议您这样做!这些单词是为了它们的目的而精心挑选的,你应该知道进入BDD心态的目的是什么。

换句话说,使用Gherkin术语以(相对)自然语言与您的特征进行交流,并将Arcana埋入步骤定义中。使用语言流程中最自然适合的任何关键字,并且不会出现严格遵守可能不适用于所有情况的约定的精心编写的场景。

另一答案

网上有很多非常糟糕的小黄瓜。关于Gherkin的优点还有一系列的意见。

我的观点是When When When When是一个反模式。可能需要以下其中一项

  1. 你需要一个更好的给予合并第一个当然

要么

  1. 您需要将场景分成两部分。

一般情况下,大多数情景都会在后来的场景中成为给定的,因为您在现有行为的基础上定义和创建新行为。

以上是关于黄瓜订购给定,何时,然后(给定,何时,然后,何时,然后)的主要内容,如果未能解决你的问题,请参考以下文章

如何知道(在 GCC 中)何时声明了给定的宏/预处理器符号?

何时类型不是类型?错误:'是一种类型,在给定的上下文中无效'

线程同步 - 何时终止线程?

从UTC转换为任何时区

私有继承 VS 组合:何时使用哪个?

何时调用移动 ctor?