【问题标题】:Why are scenario outlines shown as 'External' in the VS 2012 Test Explorer?为什么 VS 2012 测试资源管理器中的场景大纲显示为“外部”?
【发布时间】:2013-02-17 15:20:09
【问题描述】:
我有一个场景大纲(又名场景模板),我希望使用 VS 2012 的测试资源管理器列出我的测试。
默认测试分组由“项目”名称完成 - 如果我坚持使用它,来自场景大纲的测试将在“外部”组中,而不是在我的项目组下。
为什么会这样,是否有解决方案/解决方法?
我的情况是,我想使用测试资源管理器为给定项目运行所有测试。为所有人设置相同的特征是愚蠢的,而且容易出现人为错误。
我的解决方案有 10 个这样的项目,并打算很快添加更多。因此,将项目的场景大纲测试保留在“外部”下可能会导致任何人错过它们或获取属于另一个项目的场景大纲生成的测试。
更新
GitHub 用户 Shashi (https://github.com/shashiprabhakar) 已向 SpecFlow 贡献者记录了一个问题:https://github.com/techtalk/SpecFlow/issues/275。非常感谢,伙计!
我已经开始跟踪它,所以如果在那里提出修复/解决方法,我会在此处发布它作为答案。
【问题讨论】:
标签:
visual-studio-2012
specflow
test-explorer
【解决方案1】:
<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 的建议,下一步是在解决方案资源管理器中右键单击项目文件并选择 Regenerate Feature Files 选项。
NB:当您设置 allowDebugGeneratedFiles 标志然后重新生成 .feature 文件时实际会发生什么,SpecFlow 只是从 .feature.cs 文件中删除 #line hidden 和 #line number。 p>
最后,我个人建议在重建之前或之后重新启动 Visual Studio 2012。当我尝试上述步骤时,测试资源管理器只有在重新启动 Visual Studio 后才能正确显示测试。
PS:Gaspar 指出,如果引发 allowDebugGeneratedFiles 标志 (=true),则使用“运行 SpecFlow 场景”选项将不再起作用。
但是,我可以通过右键单击项目文件来使用该选项。
在我尝试 Gaspar 的建议之前,在 .feature 上使用该选项对我不起作用,所以这一定是他所指的缺点。
PS #2:Gaspar 还提到在 SpecFlow 1.9.2 中不会有这样的缺点。