1

老实说,我对此完全陌生。

假设我有以下情况:

Scenario: User grid displays information about all users
Given the application have at least one user
When I go to the user grid page
Then I should see a list of user data in the user grid

当我知道应用程序在测试开始时不包含用户数据时,我如何确保在这种情况下保持测试隔离?

到目前为止,我可以看到以下选项:

  1. 在触发此场景之前添加一个创建用户场景。(这打破了隔离。)
  2. 有代码要检查have at least one user,如果没有则插入。(还没有在互联网上看到这样做过,这是正常的还是好的做法?)
4

1 回答 1

0

我觉得你的测试太抽象了。尝试更具体一点。如果您要使用:

Given I add a user called bob
When I view the users grid page
Then I should see bob in the user list

那么我认为现在更明显的是你需要使用类似于你的选项 2 的东西。你甚至可以考虑

Given I add a user called bob
And I add a user called bill
....

或者如果你喜欢

Given I add an accounts team
...

不要忘记 SpecFlow 绑定只是方法,因此您可以在幕后

[Given ("I add an accounts team")]
public void GivenIAddAnAccountsTeam()
{
  GivenIAddAUserCalled("bob");
  GivenIAddAUserCalled("bill");
}

不要忘记 BDD 就是提供示例。这些示例应该包含您需要描述的所有内容,以测试您的场景,所以不要太弱。此外,您会发现,如果您将对象设为已知实例,例如 bob,他不是管理员但有权查看帐户数据,这样编写这些场景会变得更加容易。这样,当您讨论您的场景时,每个人都已经知道 bob 应该如何出现在用户列表中。

于 2013-07-18T16:50:20.027 回答