【问题标题】:Built tests are not added to the Visual Studio Test Explorer window构建的测试未添加到 Visual Studio 测试资源管理器窗口
【发布时间】:2015-08-14 21:52:46
【问题描述】:
  1. 我为 Visual Studio 2013 设置了 SpecFlow 插件。
  2. 我创建了新的功能项并构建了它。

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

我是按照这个video做的

【问题讨论】:

  • 你添加了 specflow 视觉工作室扩展和 nuget 包吗?
  • 是的,当然,我添加了 SpecFlow 和 SpecFlow.NUnit 包
  • 你是否设置了 specflow 来生成 mstest 测试?
  • 我认为没有。你能描述一下我该怎么做吗?
  • 添加了一个显示如何正确设置配置的答案

标签: specflow white-framework


【解决方案1】:

为了将其配置为生成 MSTest 测试,您需要将其添加到您的 app.config:

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

【讨论】:

  • 我的 app.config 中有这些行:
  • 那么您的测试是以 NUnit 格式生成的,我认为 VS 默认不会识别它们。将其更改为 MSTest(如果您想使用 MSTest)或安装 specflow NUnit 支持 NuGet 包
  • 但是SpecFlow.NUnit包已经安装了但是VS还是没有看到这个测试
  • 改成MSTest能看到吗?
  • 命名空间“Microsoft.VisualStudio”中不存在类型或命名空间名称“TestTools”(您是否缺少程序集引用?) - 出错
【解决方案2】:

我遇到了同样的问题,但解决方案不同。

按照SpecFlow Github issue 上的建议,以下内容对我有用:

  1. 关闭所有 Visual Studio 实例
  2. 转到 %TEMP%\VisualStudioTestExplorerExtensions\
  3. 删除这里的所有文件夹
  4. 再试一次

【讨论】:

    【解决方案3】:

    如果测试没有显示在测试资源管理器中,你需要安装 NUnit 测试适配器:

    转到工具->扩展和更新->在线->Visual Studio Gallery->工具->测试并选择NUnit测试适配器

    【讨论】:

    • 那么测试 d=应该出现在测试资源管理器中。我有同样的问题。但如果有很多测试,只有你应该等待几分钟。您也可以卸载并重新安装 NUnit 测试适配器
    【解决方案4】:

    Visual Studio 可以在加载时更改默认处理器架构。在无休止地试图找出问题的同时,我终于弄清楚了,并不是真正的 Specflow 导致了这个问题。

    如果您有需要特殊架构的引用,它将阻止测试显示在测试资源管理器中。根据您的需要将架构更改为 x86 或 x64。

    查看构建问题的另一件事是打开“输出”窗口并将下拉列表更改为“构建期间的测试”。它将突出显示构建过程中发生的任何事情的信息。

    我觉得应该有人提到它以防万一。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        就我而言,未发现测试的原因是因为我使用的是 Resharper 构建。
        我一去:Resharper -> Options -> Tools -> Build -> General: "Use ReSharper Build"(untick),然后突然发现所有的测试。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            对我来说,我从使用直接 DLL 引用更改为使用 SpecFlow 3.1.7.4 版本的 NuGet 引用,这解决了问题。

            我需要参考“SpecFlow”、“SpecFlow.NUnit”和“SpecFlow.Tools.MsBuild.Generation”。 然后单击 Visual Studio 中的“显示所有文件”按钮以查看与其关联的功能文件同级级别的代码隐藏文件(这曾经是旧版功能文件的关联子文件版本)。

            我还需要使用代码隐藏文件上的“包含在项目中”上下文菜单项,以便测试显示在 Visual Studios“测试资源管理器”中。

            注意:我确实尝试从 NuGet 包中解压缩 Specflow 所需的文件,并在我的项目中直接引用它们以与我的项目中的其他直接引用(非 NuGet 引用)保持一致,但这似乎不起作用并且您必须使用 NuGet 参考。我在 github 中发现了一个已关闭的问题,它指出我们必须使用 Nuget 引用才能让测试在测试资源管理器中工作: https://github.com/techtalk/SpecFlow/issues/1617

            【讨论】:

              【解决方案9】:

              对我来说,问题在于我的 srprofile 文件中的 TestAssemblyPath。它与我的实际 dll 名称不匹配。

              【讨论】:

                【解决方案10】:

                我尝试安装 Nugget 包

                SpecFlow.Tools.MsBuild.Generation
                

                使用与 specflow 相同的版本,现在我可以在 TestExplorer 中看到测试,其他方式不适合我。

                我已经安装了 1 个

                Nugget Package Specflow
                Specflow.NUnit
                Nunit
                Nunit3TestAdapter
                

                Visual Studio for Specflow 的扩展是一个 NUnitTestAdapter

                【讨论】:

                  猜你喜欢
                  • 2020-08-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-10-25
                  • 2016-06-10
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多