看起来在 Visual Studio 2012 的测试资源管理器中没有针对 Specflow 功能的排序功能。有没有人有/知道一种解决方法来确保测试以特定的顺序运行(因为测试可能会受到结果/完成的操作的影响在(a)以前的测试中)?
Visual Studio 2012 中可用的“有序测试”功能似乎不适用于 Specflow 功能。您可以创建的 .orderedtest 文件不会将 SpecFlow 功能识别为可用测试。
看起来在 Visual Studio 2012 的测试资源管理器中没有针对 Specflow 功能的排序功能。有没有人有/知道一种解决方法来确保测试以特定的顺序运行(因为测试可能会受到结果/完成的操作的影响在(a)以前的测试中)?
Visual Studio 2012 中可用的“有序测试”功能似乎不适用于 Specflow 功能。您可以创建的 .orderedtest 文件不会将 SpecFlow 功能识别为可用测试。
在我个人认为有序单元测试是代码味道之前遇到过这个问题。理论上,我们的每个测试都不应该依赖于在其执行之外创建的任何状态。
这样考虑,如果我们正在编写一个带有模拟依赖项的普通单元测试,那么我们需要的一切都在我们的测试方法中创建,然后再调用 SUT。当我们汇总测试规模时,我们仍然需要确保事情处于正确的状态,然后再调用我们更大的 SUT。然后,对于集成或系统测试,将创建测试包并准备好输入,数据库已经清理为新输入做好准备,甚至手动测试人员也已经获得了测试内容的脚本。
当我们考虑 SpecFlow 级别的测试时,我们需要同样的东西,Given
s 仍然需要在调用 s 之前把所有东西都准备好When
。
但是我个人有一些集成级别的场景,
Given ...
And ...
When ...
Then ...
When ...
Then ...
Given ...
When ...
Then ...
And ...
在某些方面,这些与您的有序测试同义,最终When
要求所有前面When
的 s 都已正确完成。因此,这打破了单元测试的几个原则,包括每个测试应该只因一个原因而失败,但是我个人对此表示同意,因为我的较低级别的单元测试句柄提供了代码问题的指标。
“排序”有不同的方法。您可以在测试资源管理器中使用Group By功能,并且可以创建播放列表(标记测试 -> 右键单击 -> 添加到播放列表)。据我所知(但直到现在才使用)有序测试也是一种对测试进行排序的方法。