我一直在使用Gherkin(和Cucumber一起)多年。我很早就注意到Cucumber.io主页的例子在给定和when语句中引用了'I',但在then语句中没有引用。
我一直认为这是因为给定和何时语句是用户的主观行为,其中语句应该是关于被测应用程序状态的客观测量。
但是,我在官方的Cucumber书中注意到,他们的例子在步骤中一直提到“我”(包括使用then语句时)。
任何人都知道哪种方法是正确的?
答案 0 :(得分:1)
根据我对BDD和Gherkinri的经验,我们一直认为用户故事有两个演员:用户和系统。并非所有参与者都是最终用户。例如,角色可能是另一个系统或想要某些功能的人,以便购买您的产品,但实际上永远不会使用该产品。创建聚合角色(例如消费者)和专门角色(例如浏览器或常客)可能很有用。因此,在 Then 步骤中 I 实际上是从最终用户的角度来看的预期结果。例如:
Then I should see that cash amount 'storedTotalAmount' and cash amount 'currentAmount' are equal 'true'
答案 1 :(得分:1)
关于是否"然后"没有确定的规则。陈述应包括" I"。作为@ekostadinov,它取决于参与测试场景的Actors。
例如在消息传递场景中:
Given Alice is on a messaging page
When Alice posts a message to Bob
Then Bob should receive the message
在这种情况下,使用" I"是不合理的。在"然后"。但是,如果您的情况略有不同:
Given I am on the messaging page
When I post a message to Bob
Then I should receive confirmation that Bob received the message
然后使用"我"确实有意义。
因此,这取决于你如何编写测试。总而言之,我更喜欢在整个测试中使用角色(即系统中特定类型的用户),例如Alice,Bob等。这通常会消除使用" I"的任何可能的歧义。