Nunit - 没有发现测试[没有错误消息]

时间:2015-04-27 08:30:37

标签: c# .net visual-studio unit-testing nunit

单位拒绝在程序集中进行dsicover或运行我的测试。这不是单位产生错误消息的情况,例如"无法在汇编中找到测试"。它根本没有发现我有测试。

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

发现测试开始------ 发现测试结束:0找到(0:00:00,0260026)"

我已尝试过这篇文章中提到的所有内容: NUnit doesn't find tests in assembly

升级不是可能的。处理器体系结构设置正确。我的测试是公开的,并且具有所有正确的标签。

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

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 test explorer。单元框架版本2.5.9.10348,运行时版本v2.0.50727。我安装了单元测试采用者。我试图重新安装它但没有成功。

10 个答案:

答案 0 :(得分:32)

您必须安装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帖子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中找到,该帖子也指向两个早期帖子。

如果查看“测试”下的“输出”控制台窗口,则运行时会显示适配器名称和版本。如果它没有出现,则适配器不活动。

如果运行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(Update 1)开始安装NUnit 3 TestAdapter。这适用于NuGet包:NUnit 3.9.0。

答案 1 :(得分:2)

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

希望这有帮助。

答案 2 :(得分:1)

从Visual Studio 2013升级到VS 2017时遇到同样的问题。 在我的例子中,所有测试都是针对NUnit 2(而不是3)编写的,并且在VS 2013中运行良好。一旦安装了VS2017,就无法找到任何测试。

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

解决方案是通过单击Tools菜单安装Nunit 2测试运行器, 工具|扩展和更新。接下来,在右侧列表中选择Online,然后在Search框中输入“NUnit”。然后,您可以添加适当的NUnit测试运行器。

这可能适用于除MSTest之外的所有测试跑步者。

答案 3 :(得分:1)

在我的情况下,我使用了TestCaseSource属性。并传递了错误的sourceName。

//deny other Roles Beside Admin
[Authorize(Roles = "Admin")]
public ActionResult AdminOnly()
{
return View();
} 

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我也面临着同样的问题。我的测试没有被发现。从nuget软件包管理器安装NUnit3TestAdapter dll后,解决了我的问题。我的Visual Studio版本是vs2017。

答案 7 :(得分:0)

这里没有什么要检查的。 1)确保我们在测试项目中引用了正确的dll。在我们的情况下 NUnit3testAdapter 2)我们必须重新启动Visual Studio,以便我们的新安装扩展程序生效。

即使在尝试了所有这些方法之后仍然无法正常工作,但将其安装为工具扩展和更新的一部分,并从此处安装NunitTest适配器。 这肯定应该起作用。

答案 8 :(得分:0)

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

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

然后,我必须在自己的代码中将属性从MSTest更改为NUnit属性,例如[TestClass]到[TestFixture]。

所以基本上检查一下您是否没有添加任何冲突的红色包。

enter image description here

答案 9 :(得分:0)

在我的情况下,显示“发现测试已完成-找到0个”消息的原因是我尚未运行Nuget软件包的更新。

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