7

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

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

我的场景是我想使用测试资源管理器为给定项目运行我的所有测试。为所有人设置相同的特征是愚蠢的,并且容易出现人为错误。

我的解决方案有 10 个这样的项目,并且很快就会添加更多。因此,将项目的场景大纲测试保留在“外部”下可能会导致任何人错过它们或获取属于另一个项目的场景大纲生成的测试。

更新

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

4

2 回答 2

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

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

正如 Gaspar 建议的那样,下一步是在解决方案资源管理器中右键单击项目文件并选择Regenerate Feature Files选项。

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

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

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

PS #2:Gaspar 还提到 SpecFlow 1.9.2 中将消除这样的缺点。

于 2013-03-15T09:35:54.550 回答
0

正如 Gaspar ( https://github.com/gasparnagy ) 在对 GitHub 问题 ( https://github.com/techtalk/SpecFlow/issues/275 ) 的评论中建议的那样,在解决方案资源管理器中右键单击项目文件然后选择“Run SpecFlow Scenarios”是测试资源管理器的项目分组的一个很好的解决方法。

我可以验证该提议是否有效 - 使用 SpecFlow 1.9.0 对其进行了测试。

但是,这仍然给测试资源管理器及其怪异的“外部”测试组留下了问题,其中放置了场景大纲生成的测试。

如果发现更多细节,我将更新此答案或发布新答案。

于 2013-03-13T15:02:37.233 回答