构建的测试未被添加到Visual Studio测试资源管理器窗口

23
  1. 我在Visual Studio 2013中安装了SpecFlow插件。
  2. 我创建了一个新的功能项并进行了构建。

结果:构建的测试未显示在“测试资源管理器”中。为什么?

我按照这个视频的步骤执行。


你是否已经添加了SpecFlow Visual Studio扩展和NuGet包? - Sam Holder
当然,我已经添加了SpecFlow和SpecFlow.NUnit包。 - Vlad Kostyukevich
你是否已经设置了SpecFlow以生成MSTest测试? - Sam Holder
我认为不行。你能描述一下我该怎么做吗? - Vlad Kostyukevich
1
添加了一个答案,展示如何正确设置配置。 - Sam Holder
10个回答

23

我遇到了相同的问题,但解决方法不同。

根据SpecFlow Github问题上的建议,以下步骤适用于我:

  1. 关闭所有Visual Studio实例
  2. 进入%TEMP%\VisualStudioTestExplorerExtensions\
  3. 删除此处所有文件夹
  4. 再次尝试

23

为了将其配置为生成MSTest测试,您需要在app.config中添加以下内容:

<specFlow>    
  <unitTestProvider name="MSTest"></unitTestProvider>
</specFlow>

1
我在我的 app.config 文件中有以下这些行: <specFlow> <unitTestProvider name="NUnit" /> </specFlow> - Vlad Kostyukevich
如果您使用的是NUnit格式生成测试,我认为VS默认情况下无法识别它们。要么将其更改为MSTest(如果您想使用MSTest),要么安装specflow NUnit支持NuGet包。 - Sam Holder
1
但是SpecFlow.NUnit包已经安装,但是VS仍然无法看到这个测试。 - Vlad Kostyukevich
如果将它改成MSTest,它还能看到吗? - Sam Holder
1
类型或命名空间名称“TestTools”在命名空间“Microsoft.VisualStudio”中不存在(是否缺少程序集引用?)- 使用<unitTestProvider name="MSTest"时出现错误。 - Vlad Kostyukevich
显示剩余3条评论

17
如果测试在测试浏览器中没有显示,您需要安装NUnit测试适配器: 前往 工具->扩展和更新 ->在线->Visual Studio Gallery->工具->测试,然后选择NUnit测试适配器。

1
然后测试应该出现在测试资源管理器中。我也遇到了同样的问题,但是如果有很多测试,你只需要等待几分钟。你也可以卸载并重新安装NUnit测试适配器。 - Sonja

5
Visual Studio在加载时可以更改默认的处理器架构。 在不断地寻找问题的过程中,我最终找到了问题所在,那就是并非Specflow导致了问题。
如果您有引用需要特殊的架构,则会防止测试出现在测试资源管理器中。 根据您的需求将架构更改为x86或x64。
另一件事情是,您可以打开输出窗口并将下拉菜单更改为“生成期间的测试”,以查看构建问题。 它将突出显示任何在构建过程中发生的信息。
我认为应该提到这一点,以防万一。

2
对我来说,我改变了使用直接DLL引用的方式,转而使用版本为3.1.7.4的SpecFlow NuGet引用,这解决了问题。
我需要引用"SpecFlow"、"SpecFlow.NUnit"和"SpecFlow.Tools.MsBuild.Generation",然后在Visual Studio中点击"Show All Files"按钮,以查看与其关联的Feature文件同级别的代码文件(在旧版本中,这是关联的子文件)。
我还需要在代码文件上使用"Include In Project"上下文菜单项,以使测试出现在Visual Studios的"Test Explorer"中。
注意:我尝试从NuGet包中解压出Specflow所需的文件,并直接在我的项目中引用它们,以保持与我的项目中其他直接引用(非NuGet引用)的一致性,但这似乎行不通,你必须使用NuGet引用。我在github上找到了一个关闭的问题,它说明我们必须使用Nuget引用才能让测试在Test Explorer中工作: https://github.com/techtalk/SpecFlow/issues/1617

2
在我的情况下,上述所有方法都没有起作用。我的解决方案是:我不知道为什么,但我重新安装了“Visual Studio 2015的Specflow”在“工具 => 扩展和更新”中,然后我创建了一个新的功能文件(旧的仍然无法工作),这个新的功能文件可以正常工作。

2
在我的情况下,测试未被发现的原因是我正在使用Resharper构建。
一旦我进入:Resharper -> 选项 -> 工具 -> 构建 -> 常规:“使用ReSharper Build”(取消勾选),然后所有测试突然被发现了。

2

我正在使用SpecRunner运行SpecFlow测试,遇到了同样的问题,事实上有几次。 尝试了以上所有建议后,我发现解决问题的唯一方法是卸载并重新安装SpecRun NuGet包。下一次构建,测试将按预期出现在“测试资源管理器”窗口中。


1
我的问题在于srprofile文件中的TestAssemblyPath与实际dll名称不匹配。

0

我尝试安装NuGet包

SpecFlow.Tools.MsBuild.Generation

使用与SpecFlow相同的版本,现在我可以在TestExplorer中看到测试,其他方法对我无效。

我已经安装了1个。

Nugget Package Specflow
Specflow.NUnit
Nunit
Nunit3TestAdapter

还有 Visual Studio 的 Specflow 扩展和 NUnitTestAdapter


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接