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

Bor*_*v T 7 specflow visual-studio-2012 test-explorer

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

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

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

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

UPDATE

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

Bor*_*v T 6

<specFlow>
  <unitTestProvider name="..." /> <!-- this you have already -->
  <generator allowDebugGeneratedFiles="true" /> <!-- this is the important setting -->
</specFlow>
Run Code Online (Sandbox Code Playgroud)

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

正如加斯帕建议的那样,下一步是在解决方案资源管理器中右键单击项目文件,然后选择" 重新生成要素文件"选项.

注意:当您设置allowDebugGeneratedFiles标志然后重新生成.feature文件时实际发生的事情,SpecFlow只是从.feature.cs文件中删除#line hidden#line 编号.

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

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

PS#2:Gaspar还提到在SpecFlow 1.9.2中不会有这样的缺点.