BDD如何隔离依赖于数据的测试

时间:2013-07-17 18:22:15

标签: bdd specflow

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

说我有以下情况:

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,如果没有则插入。 (从未在互联网上看到这种情况,这是正常的还是良好的做法?)

1 个答案:

答案 0 :(得分: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应该如何出现在用户列表中。