在 Specflow 中,框架不接受新的 .srprofile 名称

In Specflow, new .srprofile names are not accepted by framework

几天前我开始遇到新的 .srprofile 文件的问题。上个月,我创建了 3 个自定义 .srprofile 文件,用于并行与顺序、不同服务器等的各种组合。效果很好。我有一个相应的 Visual Studio .runsettings 文件,以便编写测试的人(和我)可以在 Visual Studio 中选择一个 .runsettings(因此是 .srprofile)。选择保留在本地,因此我们不会在签入代码时相互混淆切换配置文件。

直到 2 天前,当我需要创建另一个 .srprofile 时,该设置一直运行良好(使用 Selenium 进行了超过 650 次测试)。当 .runsettings 文件指向我创建的任何新文件时,当重建解决方案以发现测试时,没有找到任何测试。经过反复试验,我可以将问题隔离到 .srprofile 文件的名称。我在 2 月份制作的 3 个 'original' .srprofiles 都运行良好(使用任何有效的 xml 配置)。如果我将其中一个工作文件复制并粘贴到一个新文件(当然是使用新名称),将其导入 Visual Studio,更改活动的 .runsettings 文件以指向这个新的 .srpfofile 文件,然后重建, 未发现任何测试。当我返回 3 个可接受的文件名之一时,所有测试都会被发现并列在文本资源管理器中。

总结:具有完全相同内容(从另一个复制;ExamDiff 表示完全相同的内容)的 .runsettings 文件是否有效(即,Visual Studio 发现测试)取决于名称是否有效该文件的名称显然是我几周前创建的 3 个 'grandfathered' 名称之一。

某种缓存,对吧?嗯,我已经清除了 nuget 包,删除了著名的 \%TMP%\VisualStudioTestExplorerExtensions\ 内容(在我的例子中是“\SpecRun.Runner.1.3.0-beta11\”),清除了 bin\x64\Debug 和 obj\x64\Debug 文件夹,得到来自源代码控制的解决方案(应该只有关键文件,没有 Nuget 的东西也没有临时文件),重新启动了很多次,然后重新安装了 specflow VS 插件,在机器上挥舞着一只死鸡,等等。看起来在我找不到的地方跟踪 "good" 和 "bad" .srprofile 名称。 有人明白吗?

更新:

按照 Meirion Hughes 的建议,我发现在 .csproj 文件中,"invalid" 文件是这样指定的:

<None Include="BrowserStack.srprofile" />

而 "valid" .srprofile 文件是这样导入的:

<None Include="RomulusDirectSequential.srprofile">
    <SubType>Designer</SubType>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

我没有想到这一点,因为我从未接触过这些设置。一定是因为它们是如何导入的,可能是使用上下文菜单在 v. 中拖动文件。

果然,在 Visual Studio 中,这些文件的“复制到输出”设置不同。

修复后,一切都很好。说得通。较新的 .srprofile 文件根本没有复制到 visual studio 和 specrunner 可以找到并识别它们的地方。

确保新文件也以同样的方式包含在项目中:

  • 卸载您的项目(通过右键单击)。
  • 编辑项目文件并查找您的有效文件。
  • 确保用于导入工作文件的 xml 与用于新文件的 xml 相同。

项目文件中可能有很多内容,因此可能存在差异。