我已经阅读了SpecFlow的入门教程。 一切都运行正常,除了我有@SpecRun测试,因为我还没有输入演示密钥。
但在我们的主项目中,我们使用NUnit而不是SpecFlow + Runner。 所以我试图模仿那个项目。如果您使用NUnit,则不需要演示密钥。 所以我将单元测试提供程序更改为:
<specFlow>
<unitTestProvider name="NUnit" />
</specFlow>
我还将我的教程参考文献与主项目的参考文献进行了比较。 我发现我可以拿出TechTalk.SpecRun,该项目仍然可以编译。 当然需要TechTalk.SpecFlow。
如果我取出SpecRun.SpecFlowPlugin,除了@SpecRun之外没有测试显示,这是没有演示密钥的测试延迟。
我还在主项目中看到一个名为:SpecFlowNUnitExtension.cs的csharp文件。 我带来了这个文件,但我的测试仍未显示在Visual Studio测试窗口中。 注册这个文件需要做些什么吗?
答案 0 :(得分:11)
您需要Visual Studio的测试运行适配器才能在测试资源管理器中获取测试。它们由NuGet包分发。 将测试运行器的包添加到测试项目中。
答案 1 :(得分:4)
将NUnit测试适配器更新为NUnit3测试适配器。 重新启动Visual Studio并重建应显示的测试。
答案 2 :(得分:1)
对于VS 2019
我花了几个小时在Test Explorer上看到了可运行的测试。我正在使用SpecFlow.xUnit
nuget,它将SpecFlow安装为依赖项,并且我将xunit.runner.visualstudio
安装为测试运行程序。还应按照SpecFlow的getting started page所述安装SpecFlow.Tools.MsBuild.Generation
nuget。在将功能分离并在测试项目中将cs文件生成到不同的文件夹后,我开始在spec上运行测试。此外,如果您单击在解决方案资源管理器中显示所有文件,则可以看到.feature.cs
文件。
答案 3 :(得分:0)
我在Visual Studio 2019中也遇到了同样的问题,我设法通过添加以下nuget包来修复:- SpecFlow, SpecFlow.Tools.MsBuild.Generation, SpecRun.SpecFlow
答案 4 :(得分:-1)
如果您想进行测试 - 由Specflow生成的单元测试,只是为了精确 - 在您的单元测试资源管理器中显示,您必须创建单元测试项目。如果您创建了一个类库项目,那么您将看不到它们。
Here您可以找到有关如何将类库项目转换为单元测试项目的信息。