【问题标题】:NUnit Unit tests not showing in Test Explorer with Test Adapter installed安装了测试适配器的测试资源管理器中未显示 NUnit 单元测试
【发布时间】:2013-10-10 14:18:37
【问题描述】:

我已经为 VS2012 + 2013 安装了 NUnit 测试适配器。当我第一次安装适配器测试时出现了,但由于某种原因它们今天停止出现。在构建、重建、清理、重新启动之后,测试资源管理器中没有显示任何内容。为什么会发生这种情况?我正在使用 VS2013 Ultimate。

【问题讨论】:

  • 尝试右键单击您的测试项目,然后单击运行。它会再次用测试填充窗口。
  • @ChaseFlorell 它没有。我看到测试资源管理器中的绿色条开始移动,然后在一瞬间停止。
  • 您还有其他可能会干扰的测试工具吗?我使用 R# 来运行我的测试,而且我使用的是 VS2012,所以我的环境不够好。我确实知道,当我关闭窗口或运行一小部分测试时,完整的测试树就会消失。
  • 您可以尝试卸载测试项目,重新构建,然后重新加载它...
  • @ChaseFlorell 我有 R#,但它在 NUnit 测试中像糖蜜一样慢......而且它在这之前工作令人沮丧。我会尝试卸载。

标签: nunit


【解决方案1】:

如果您使用的是 NUnit3+ 版本,则有一个新的测试适配器可用。

转到“工具 -> 扩展和更新 -> 在线”并搜索 “NUnit3 测试适配器”,然后安装。

【讨论】:

  • 额外 +1,因为这也解决了代码覆盖率指标消失的问题。
  • 如果防火墙代理通过扩展和更新阻止了 url,则使用此 url 下载适配器。 marketplace.visualstudio.com/…
  • 请注意,您可能还需要禁用 NUnit2 测试适配器。
  • 以这种方式获取它与从 NuGet 包管理器获取它有什么区别?
  • 使用 NuGet,您将可以访问 nunit 的 api。使用这种方式,您将能够在测试资源管理器上运行测试(默认情况下它只运行 MS 测试)。
【解决方案2】:

如果您的测试项目设置为针对 64 位平台,则测试不会显示在 NUnit 测试适配器中。

【讨论】:

  • 可能是需要匹配菜单在Test -> Test Settings -> Default Processor Architecture中指定的架构
  • @Brannon 确实如此。如果设置为 x64,则 x64 项目中的测试可见。
  • 这里发生了更愚蠢的事情 - 忘记在我的测试方法中添加 [Test] 属性:)
  • 这个问题似乎仍然存在于 NUnit 3 测试适配器中。请参阅 Simoyd 关于测试适配器架构(x64 与 x86)的解决方案。
  • 这是一个错误的答案。要运行测试,请选择“测试”->“测试设置”->“默认处理器架构”->“x64”
【解决方案3】:

我的测试程序集是 64 位的。从 Visual Studio 2012 顶部的菜单栏中,我可以选择“测试”->“测试设置”->“默认处理器架构”->“X64”。在“构建”菜单中的“重建解决方案”之后,我能够在测试资源管理器中看到我的所有测试。希望这对将来的其他人有所帮助=D。

【讨论】:

  • 确保检查程序集和程序的体系结构。即使您的解决方案或项目的平台可能明确设置为 x64,如果您的测试架构不匹配,您将无法运行测试。
【解决方案4】:

检查 NUnit 版本是否不匹配。当前可用的 NUnit 测试适配器仅适用于 NUnit 2.6.4 及以下版本。 要从版本 3.x 降级 NUnit,请访问 包管理器控制台 > update-package NUnit -version 2.6.4

http://jeremybytes.blogspot.co.ke/2015/11/review-of-unit-testing-makes-me-faster.html

【讨论】:

  • 您先生,准确地解决了我的问题!谢谢!有一个名为 NUnitTestAdapter.WIthFramework 的 nuget 包非常有用!
  • 我遇到了类似的问题,即 NUnit 版本不匹配。我的一些(但不是全部)测试没有显示在测试资源管理器中,所以我尝试了各种建议,例如更新 NUnit 测试适配器。我之前已将 NUnit 从 3.6.1 升级到 3.7.1,但由于某种原因,我的一个项目仍然引用 nunit.framework.dll 版本 3.6.1,而其他所有项目都引用 3.7.1。我更新了对 3.7.1 的引用,这成功了。到目前为止,我的测试还没有消失。手指交叉!
【解决方案5】:

在我的情况下,“NUnit3 测试适配器”已被禁用。 要重新启用它,请转到菜单

工具->扩展和更新...

在左侧选择“已安装”->“全部”。

在右上角搜索“nunit”。

如果您安装了“NUnit3 测试适配器”,您可以使用找到的项目启用/禁用它。

【讨论】:

  • 对我来说这不起作用。尝试卸载,它假装消失了,但重新启动后它就在那里。我发现我以标准用户身份安装了 NUnit,然后尝试以管理员身份卸载它。 VS对此没有说什么......所以解决方案是尝试在没有管理员权限的情况下启用它,反之亦然。
  • 谢谢,这正是我的问题
【解决方案6】:

这个答案似乎很基本,但起初对我来说并不完全清楚。如果您(重新)构建解决方案,它只会构建配置为在 Build -> Configuration Manager 中构建的项目

这是我的问题,我一定是无意中更改了构建配置设置或导致我的测试项目无法构建的东西(以前是这样)。所以Test Explorer 窗口正在查看过期的dll。在执行Clean 并看到我的大部分测试消失并且在rebuild...进一步检查bin 文件夹后显示这些项目没有被构建后,我很清楚这是这种情况完全没有。

【讨论】:

  • 虽然所有项目都在配置管理器中设置为 build,但我不得不手动构建每个测试项目以使测试再次显示。
  • 我手动构建了我的测试项目。那还不够。我必须按照这个答案所说的去做。
【解决方案7】:

我有一个有效的设置(对于 NUnit2 和 NUnit3,具体取决于解决方案,以及 2012 年至 2017 年之间的多个版本的 Visual Studio),但有一天它突然停止工作:在任何解决方案或版本的 VS 中都没有检测到测试。

就我而言,它有助于删除%localappdata%\Temp\VisualStudioTestExplorerExtensions。重新启动 VS 后,一切正常。

【讨论】:

    【解决方案8】:

    如果您使用 VS 2017 和 .net core,如 here 所说,您应该在测试中添加对测试框架 NUnit 3.6.1 的引用runner NUnit3TestAdapter 3.8.0-alpha1 和测试 SDK Microsoft.NET.Test.Sdk 15.0.0

    【讨论】:

    • 我没有使用 .NET Core,但是当我迁移到 VS2017 时安装 NUnit 测试适配器为我解决了这个问题。
    【解决方案9】:
    1. 工具
    2. NuGet 包管理器
    3. 管理解决方案的 NuGet 包
    4. 浏览
    5. NUnitTestAdapter.WithFramework
    6. Ctrl+R,A 构建/运行测试

    使用 NUnitTestAdapter.WithFramework 确保 NUnit 和 NUnit Adapter 版本之间几乎没有/没有不一致(即“它只是工作”)

    【讨论】:

    • 对我来说,它在将适配器更新到 NUnitAdapter3(VS 菜单 -> 工具 -> 扩展和更新...)+ 将 NUnit 的 NuGet 页面从 2.6.3 更新到 3.2.1 后开始工作。谢谢!
    • 这是唯一对我有用的东西 - 必须是“WithFramework”(不仅仅是标准适配器)
    【解决方案10】:

    检查您是否已声明 [TestFixureSetUp] 和 [测试]

    在测试类中

    样本:

    namespace ClassLibrary1
    {
       public class SimpleCalculator
       {
          public Calculator _calculator;
          [TestFixtureSetUp]
          public void initialize()
          {
             _calculator = new Calculator();
          }
          [Test]
          public void DivideTest()
          {
             int a = 10;
             int b = 2;
             int expectedValue = a/b;
             int actualValue = _calculator.Divide(a, b);
             Assert.AreEqual(expectedValue, actualValue, "Functionality not working properly!");
          }
       }   
    }
    

    【讨论】:

    • TestFixtureSetup 似乎已经过时,更好的是
    【解决方案11】:

    我必须卸载然后重新安装 xunit.runner.visualstudio nuget 包。我在尝试了上述所有建议后尝试了这个,所以可能是混合的东西。

    【讨论】:

      【解决方案12】:

      此问题的另一个原因是如果您从映射驱动器打开项目 - Visual Studio 可以正确处理此类项目,但显然 Nunit 不支持它们。

      将项目复制到物理上解决了这个问题。

      【讨论】:

        【解决方案13】:

        我还发现,当我卸载 nunit v3.2.1 时,v3.2.1 的 nunit 框架参考仍在我的解决方案资源管理器中的项目中。 解决方案资源管理器 > 项目名称 > 参考资料

        如果您右键单击它将显示版本。删除这个 然后右键单击“参考”>“添加参考”。

        搜索 2.x 版本并添加然后重建解决方案。

        这对我有用!

        【讨论】:

          【解决方案14】:

          我遇到了op提到的问题

          我的情况是,我收到了一个旧项目,而测试实际上是被测系统的一部分。我假设他们使用的是外部测试运行器。

          这个任务链为我解决了这个问题

          • 创建了一个测试项目,
          • 将测试文件移到那里
          • 添加了引用以便编译测试项目
          • 将 Nunit 和 Nunit 适配器 NuGet 包添加到测试项目中
          • 重新编译

          我能够成功运行 Nunit 测试。

          【讨论】:

            【解决方案15】:

            如果您使用TestCaseSource 属性,请确保源存在并尊重the documentation,否则您的测试将不会被发现。

            【讨论】:

              【解决方案16】:

              我遇到了类似的问题,即未发现测试。我有正确的 NUnit 版本,NUnit 和适配器之间匹配的版本,以及正确标记的测试。我不是以管理员身份运行 VS 2017 Enterprise。以管理员身份启动 VS 后,测试出现了。

              【讨论】:

                【解决方案17】:

                我开始了一个包含测试项目的新解决方案,并将其与我原来的问题项目进行了比较。出于某种原因,原始版本中有一个 app.config。我从项目中排除了该文件,并看到我的测试重新出现在测试资源管理器中。

                【讨论】:

                  【解决方案18】:

                  我也有这个问题,但原因不同。我正在使用带有 F# 4.0 的 VS2017。

                  首先,Visual Studio 中的控制台没有提供足够的详细信息,为什么无法找到测试;它只会无法通过测试加载 DLL。因此,请在命令行上使用 NUnit3console.exe,因为这会为您提供更多详细信息。

                  就我而言,这是因为测试适配器正在寻找更新版本的 F# Core DLL (4.4.1.0) (F# 4.1),而我仍在使用 4.4.0.0 (F# 4.0)。所以我只是将这个添加到测试项目的app.config中:-

                    <dependentAssembly>
                      <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
                      <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.4.0.0" />
                    </dependentAssembly>
                  

                  即重定向到早期的 F# 核心。

                  【讨论】:

                    【解决方案19】:

                    我遇到了同样的问题,突然任何测试都没有出现在测试资源管理器窗口中。 我有“NUnit3TestAdapter”的更新版本

                    经过大量搜索和努力, 我发现我需要在项目属性中设置以下值: [在解决方案资源管理器窗口中:右键单击项目 > 属性] 在 Build 选项卡下,设置 Platform=x64,并设置 Platform target=x86 或 Any CPU 构建项目,所有测试都将出现在测试资源管理器窗口中。

                    重要提示: 在输出窗口中看到下一条消息后,我得出了一个解决方案:

                    “测试运行将使用为框架 Framework45 和平台 X86 构建的 DLL。以下 DLL 将不属于运行的一部分:AutomationTests.dll 是为框架 Framework45 和平台 X64 构建的。”

                    【讨论】:

                      【解决方案20】:

                      我有一些挂起的 msbuild.exe 进程。我不知道这是否是我的问题,但在我发现挂起的进程之前,我在重新安装各种 NUnit 适配器时花了很多时间和错误。

                      【讨论】:

                        【解决方案21】:

                        只是在这里添加我的 $.02,我昨天遇到了一个类似的问题,我的 168 个测试丢失了。我尝试了这篇文章中的大部分内容 - 尤其是确保我的 NUnit 版本相同 - 都无济于事。然后我记得我把我的测试分成了播放列表。 并且这些不会在您添加新测试时自动更新。所以,当我删除播放列表时,BAM!,我所有的测试都又回来了。

                        【讨论】:

                          【解决方案22】:

                          我使用 NUnit 3 并尝试了我在这里看到的大多数其他解决方案。这些都不适合我。

                          即使已经选择,在测试资源管理器中重新选择“播放列表:所有测试”选项也会显示我案例中的所有隐藏测试。每次重建后我都需要这样做。

                          【讨论】:

                            【解决方案23】:

                            确保您的测试课程是公开的。我经常犯这个错误然后我只看代码 5 分钟是怎么回事。

                            [测试]
                            公开 void YourTest() { ... }

                            【讨论】:

                              【解决方案24】:
                              1. 工具
                              2. NuGet 包管理器
                              3. 管理解决方案的 NuGet 包
                              4. 浏览
                              5. NUnit3TestAdapter(在我的例子中是 NUnit 3 ..)
                              6. 安装后,应该可以使用 Visual Studio 安装中包含的默认 TestExplorer。

                              【讨论】:

                                【解决方案25】:

                                确保您的测试正确标记了 Test 属性。如果所有测试都只标记了 Explicit 属性,则 TestAdapter 无法识别该夹具。

                                【讨论】:

                                  猜你喜欢
                                  • 1970-01-01
                                  • 2016-12-02
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2020-09-13
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多