Nunit - 不发现测试 [无错误消息]

Nunit - doesn't discover tests [no error-message]

Unit 拒绝发现或 运行 我在程序集中的测试。 Unit 不会产生像 "Unable to find test in assembly" 这样的错误消息。它根本没有发现我有测试。

我右击测试方法,测试输出显示:

发现测试开始------ 发现测试已完成:找到 0 个 (0:00:00,0260026)"

我已经尝试了post中提到的所有方法: NUnit doesn't find tests in assembly

升级是不可能的。处理器架构设置正确。我的测试是 public 并且具有所有正确的标签。

这是我项目中的一些代码,我什至无法执行。我知道这一点,因为我在一开始就有一个断点。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;

namespace UnitTestProjects
{
    [TestFixture]
    public class SomeRandomTests
    {
        [Test]
        public void ShouldFail()
        {
            Assert.AreEqual(1, 0);
        }

        [Test]
        public void ShouldPass()
        {
            Assert.AreEqual(1,1);
        }
    }
}

我正在 运行 测试内部 visual studio 测试浏览器。单元框架版本 2.5.9.10348,运行时间版本 v2.0.50727。我安装了 Unit Test Adopter。我尝试重新安装它但没有成功。

您必须安装 NUnit VSAdapter vsix 扩展,或将适配器作为 nuget 包添加到您的解决方案中。

最新版本是2.0,vsix可以在这里找到:https://visualstudiogallery.msdn.microsoft.com/6ab922d0-21c0-4f06-ab5f-4ecd1fe7175d

并且可以在这里找到 nuget 包:http://www.nuget.org/packages/NUnitTestAdapter/

有关这些选项的更多信息可以在此 MSDN ALM post http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-unit-testing-with-traits-and-code-coverage-in-visual-studio-2012-using-the-tfs-build-and-the-new-nuget-adapter-approach.aspx 中找到,它还指向两个较早的 post。

如果您查看“测试”下的输出控制台 window,适配器名称和版本会原样显示在那里 运行。如果它没有出现,则适配器未激活。

如果你运行 Resharper,确保你有最新的8.2版本,之前测试适配器和resharper有冲突。

即使您无法将此项目从 NUnit 2.5.9 升级到最新的 2.6.4,您也可以使用 2.6.4 验证适配器在测试项目中是否正常工作。
我刚刚用 NUnit 2.5.9 在我自己的机器上检查过,它与 2.0 适配器配合得很好。

更新:

对于 VS2017,您不安装 NUnit VSAdapter vsix 扩展,而是安装适用于 Visual Studio 2012(更新 1)的 NUnit 3 TestAdapter。这适用于 NuGet 包:NUnit 3.9.0.

更新 2 - 2019 年 6 月 刚刚发布了 NUnit2 Adapter 的 2.2 版本。它现在应该可以与 SDK 类型的项目以及 VS 2017 和 2019 一起正常工作。

我的就像一样,但不同的是我将我的项目创建为 VS UnitTest 项目而不是普通的 DLL。所以我创建了一个 DLL 并引用了所有 nunit 程序集,现在发现了测试。

希望对您有所帮助。

NUnit30Settings.xml 可能有问题。我有这个问题。在我的案例中,文件是空的。我不知道是什么原因。我将设置从 NUnitSettings.xml 复制到 NUnit30Settings.xml。这解决了我的问题。具有设置的文件位于 ...Users\[User]\AppData\Local\NUnit.

我在从 Visual Studio 2013 升级到 VS 2017 时遇到了同样的问题。 在我的例子中,所有测试都是为 NUnit 2(不是 3)编写的,并且在 VS 2013 中运行良好。安装 VS2017 后,可以找到 none 个测试。

问题是 VS2017 没有自动在我的 VM 上安装 NUnit 2。

解决方案是通过单击“工具”菜单安装 Nunit 2 测试运行器, 工具 |扩展和更新。在右侧列表中下一步 select 在线,然后在搜索框中输入 "NUnit"。然后您可以添加适当的 NUnit 测试运行程序。

这可能适用于除 MSTest 之外的所有测试运行器。

在我的例子中,我使用了 TestCaseSource 属性。并传递了错误的 sourceName。

 [Test]
 [TestCaseSource("TestDataCaseSource")]
 public void SomeTest1(string DataName, ITestData testData)

修复后,所有测试都会出现在测试资源管理器中

对于我的案例 VS2017,在安装 Unit Test Adopter 3 之后,我只是使用 Nuget 包管理器将 DLL 的更新版本添加到我的解决方案中。

我也面临相同的 issue.My 测试未被发现。从 nuget 包管理器安装 NUnit3TestAdapter dll 后解决了我的 issue.my visual studio 版本是 vs2017.

这里没有什么要检查的。 1) 确保我们将正确的 dll 引用到测试项目。在我们的例子中它将是 NUnit3测试适配器 2) 我们必须重新启动 visual studio 以便我们的新安装扩展生效。

即使尝试了所有这些方法仍然无法正常工作将其安装为 ToolExtensions 和更新的一部分,并从此处安装 NunitTest 适配器。 这绝对有效。

我遇到了这个问题,如果我安装了 NUnit 和 MSTest 框架,我可以使用提供的示例代码重现它,这会导致找到 0 个测试的问题。

一旦我删除了 MSTest.TestAdapapter 和 MSTest.TestFramework 包,上面的示例代码就可以工作了。

在我自己的代码中,我不得不将我的属性从 MSTest 更改为 NUnit 属性,例如[测试类] 到 [测试夹具]。

所以基本上检查你没有添加任何 rouge 冲突包。

在我的例子中,消息“发现测试已完成 - 找到 0”的原因是我没有 运行 Nuget 包的更新。

转到“工具”->“Nuget 包管理器”->“管理解决方案的 Nuget 包”,然后单击“更新”选项卡。从那里您可以将新闻集更新更新到您已安装的 Nuget 包。

我想我有这个错误一天多了,到处找,重新加载所有测试 nuget 包,等等。我想我需要重新安装 Visual Studio。笨蛋,原来是测试运行器顶部的按钮。我不知何故选择了一个没有显示测试的按钮。

解决方法: 单击测试资源管理器顶部的按钮以确保您获得正确的状态。