Visual studio 2012 是否可以在Visual Studio 2012测试资源管理器中对Specflow测试进行排序?

Visual studio 2012 是否可以在Visual Studio 2012测试资源管理器中对Specflow测试进行排序?,visual-studio-2012,specflow,test-explorer,Visual Studio 2012,Specflow,Test Explorer,Visual Studio 2012的测试资源管理器中似乎没有Specflow功能的排序功能。是否有人/知道一种变通方法来确保测试按特定顺序运行(因为测试可能会受到(a)之前测试中的结果/操作的影响) Visual Studio 2012中提供的“有序测试”功能似乎不适用于Specflow功能。您可以创建的.orderedtest文件无法将SpecFlow功能识别为可用测试。有不同的“排序”方法。您可以在测试资源管理器中使用分组功能,并可以创建播放列表(标记测试->右键单击->添加到播放列表)。

Visual Studio 2012的测试资源管理器中似乎没有Specflow功能的排序功能。是否有人/知道一种变通方法来确保测试按特定顺序运行(因为测试可能会受到(a)之前测试中的结果/操作的影响)


Visual Studio 2012中提供的“有序测试”功能似乎不适用于Specflow功能。您可以创建的.orderedtest文件无法将SpecFlow功能识别为可用测试。

有不同的“排序”方法。您可以在测试资源管理器中使用分组功能,并可以创建播放列表(标记测试->右键单击->添加到播放列表)。据我所知(但直到现在才使用),有序测试也是对测试进行排序的一种方法。

我个人认为,在遇到这个问题之前,有序单元测试是一种代码味道。理论上,我们的每个测试都不应该依赖于在其执行之外创建的任何状态

这样考虑,如果我们正在编写一个带有模拟依赖项的普通单元测试,那么在调用SUT之前,我们需要的所有东西都会在我们的测试方法中创建。随着测试规模的扩大,在调用更大的SUT之前,我们仍然需要确保事情处于正确的状态。对于集成或系统测试,测试包已经创建并准备好输入,数据库已经清理完毕,为新的输入做好了准备,甚至手动测试人员也已经获得了测试内容的脚本

当我们在测试流级别上考虑测试时,我们需要相同的东西,<<代码>给出的S仍然需要在<<代码>之前调用所有的东西。p> 但是我个人有一些集成级别的场景:

Given ...
And ...
When ...
Then ...
When ...
Then ...
Given ...
When ...
Then ...
And ...

在某些方面,这些与您的顺序测试是一致的,最终的
When
要求之前的
When
s正确完成。因此,这打破了单元测试的几个原则,包括每个测试只应因一个原因失败,但我个人对此没有意见,因为我的低级单元测试处理代码问题。

我知道“分组依据”和“播放列表”功能。但这并不能确保测试运行的特定顺序。例如,如果我在一个播放列表或组中只运行一个测试,则该测试将跳到列表的顶部,并且如果下次运行整个播放列表或组,则会打乱它们的运行顺序。好的,然后,您可以查看有序测试。当您在解决方案资源管理器中右键单击某个测试时,应该可以在子菜单中看到有序测试功能(根据MSDN)。不过,我没有看到这种功能。我想是因为我在使用SpecFlow功能。我已经更新了这个问题来澄清一下。是的,右键单击->添加->然后在单元测试和一般测试之间切换。上下文菜单支持似乎只在测试项目中可用。(有趣的问题+1)我明白你的意思,我同意测试应该尽可能不依赖于其他测试的结果。但有时您希望能够单独运行一些测试(当一些先决条件已经满足时),或者能够一起运行以测试完整的事件链。为了防止您的testproject被(部分)重复的测试等弄乱,我希望能够使用我所有的“小”测试,并选择这些测试的运行顺序。@AlSki的帖子+1。所有的验收测试都应该是独立的;强制它们按特定顺序运行会使它们变得脆弱,并且是一个需要维护的噩梦(特别是如果您要离开项目的话!)。查看单元测试的首字母缩略词,因为它们同样适用于验收测试。如果您有依赖项,请按照帖子中的建议使用大量给定的、和,但我个人会避免这种情况,而是改变测试的粒度。