如何知道SpecFlow后续步骤所需的数据?

时间:2014-03-06 07:28:28

标签: c# testing specflow

我的问题如下:

我的一些场景需要在加载后保存模型的状态,以便稍后进行比较。我会通过序列化对象并在测试后期对它们进行比较来实现。但我不希望在每次测试中序列化状态 - 这可能会对测试的性能产生负面影响。我怎么知道这些数据是否必要?

我想过使用标签,但这是一个应该从功能文件中隐藏的信息。我不想被迫在我需要的每个测试中写@SaveInitialState之类的东西。

修改

这里有一个需要信息的样本测试

Given I have loaded some model
When I do some action
And Undo the last action
Then The loaded model is unchanged

序列化在这里是选择的方式,因为模型不可能被克隆,我不想为测试引入新的生产代码。序列化只能在测试中完成。

1 个答案:

答案 0 :(得分:0)

您可能尝试在此处进行错误的测试,或者至少使用错误的工具进行此类测试。

Specflow是一种工具,通常称为BDD,但更准确地称为Specification By Example。这个的基本思想是你提供有用案例的具体例子,以测试你的应用程序的功能。

这些例子需要明确。说Then the loaded model is unchanged之类的内容非常隐含。相反,我会使用像。

这样的案例
Given I am editing Bob's details
When I change Bob's age to 42
And I undo all changes
Then Bob should be aged 24

请注意,我在这里使用了一个使用预定义示例的技巧。这个想法是团队中的所有开发人员和BA都知道Bob已经24岁了,并且在帮助台上工作。您已经预先定义了这个已知示例,因此您可以避免说

Given I create a new Person
And my person should be called Bob
And my person should be aged 24
And my person should work on the Help desk