为什么场景大纲在VS 2012测试资源管理器中显示为“外部”?

时间:2013-02-17 15:20:09

标签: visual-studio-2012 specflow test-explorer

我有一个场景大纲(a.k.a场景模板),我希望使用VS 2012的测试资源管理器列出我的测试。 默认测试分组由“项目”名称完成 - 如果我坚持,我的测试来自场景大纲,位于“外部”组中,而不是在我的项目组中。

为什么会这样,是否有解决方案/解决方法?

我的情况是我想使用Test Explorer运行给定项目的所有测试。为所有人设置相同的特性是愚蠢的,容易出现人为错误。

我的解决方案有10个这样的项目,很快就会有更多的项目被添加到其中。因此,保持项目的场景概述“外部”下的测试可能会导致任何人错过它们或者获取属于另一个项目的场景轮廓生成的测试。

更新

GitHub用户Shashi(https://github.com/shashiprabhakar)已将问题记录到SpecFlow贡献者:https://github.com/techtalk/SpecFlow/issues/275。非常感谢,伙伴们! 我已开始跟踪它,所以如果在那里提出修复/解决方法,我会在此处将其作为答案发布。

2 个答案:

答案 0 :(得分:6)

<specFlow>
  <unitTestProvider name="..." /> <!-- this you have already -->
  <generator allowDebugGeneratedFiles="true" /> <!-- this is the important setting -->
</specFlow>

这是Gaspar Nagy在App.config文件中推荐的配置。 “allowDebugGeneratedFiles”似乎是一张票。 有关标签的更多信息及其子标签可在official SpecFlow configurations page上找到。 将其设置为TRUE只是第一步。

正如Gaspar建议的那样,下一步是在解决方案资源管理器中右键单击项目文件,然后选择重新生成功能文件选项。

NB :设置allowDebugGeneratedFiles标志然后重新生成.feature文件时实际发生的情况,SpecFlow只是从.feature.cs中删除#line hidden#line number文件。

最后,我个人建议在重建之前或之后重新启动Visual Studio 2012。当我尝试上述步骤时,Test Explorer仅在重新启动Visual Studio后才能正确显示测试。

PS :Gaspar指出,如果引发 allowDebugGeneratedFiles 标志(= true),则使用“运行SpecFlow场景”选项将不再起作用。 但是,我可以通过右键单击项目文件来使用该选项。 即使在我尝试Gaspar的建议之前,在.feature上使用该选项对我来说也不起作用,因此这必然是他所指的缺点。

PS#2 :Gaspar还提到在SpecFlow 1.9.2中不会删除这样的缺点。

答案 1 :(得分:0)

正如加斯帕(https://github.com/gasparnagy)在对GitHub问题(https://github.com/techtalk/SpecFlow/issues/275)的评论中提出的,右键单击解决方案资源管理器中的项目文件,然后选择“运行SpecFlow场景”是一个很好的选择测试资源管理器的项目分组的解决方法。

我可以验证命题是否有效 - 使用SpecFlow 1.9.0进行测试。

然而,这仍然存在测试资源管理器及其奇怪的“外部”测试组的问题,其中放置了场景轮廓生成的测试。

如果有更多详细信息,我会更新此答案或发布新答案。