安装了测试适配器的Test Explorer中未显示NUnit单元测试


145

我已经安装了适用于VS2012 + 2013的NUnit测试适配器。当我初次安装时,适配器测试正在显示,但是由于某些原因它们今天停止显示。构建,重建,清理,重新启动后,Test Explorer中什么都没有显示。为什么会这样呢?我正在使用VS2013 Ultimate。


2
尝试右键单击您的测试项目,然后单击运行。它将再次用测试填充窗口。
Chase Florell

@ChaseFlorell它不是。我看到Test Explorer中的绿色条开始消失,然后稍后停止。
RobVious

您还有其他可能会干扰的测试工具吗?我使用R#来运行测试,而我使用的是VS2012,所以您的环境不够好。我确实知道,当我关闭窗口或运行一小部分测试时,完整的测试树就会消失。
Chase Florell 2013年

您可以尝试卸载测试项目,进行重建,然后重新加载...
Chase Florell 2013年

@ChaseFlorell我有R#,但是它与NUnit测试的糖蜜一样慢...并且它在工作之前令人沮丧。我将尝试卸载。
RobVious

Answers:


87

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


54
可能需要匹配在“测试”->“测试设置”->“默认处理器体系结构”菜单中指定的体系结构
Brannon 2015年

6
@布兰农。如果将其设置为x64,则可以看到x64项目中的测试。
基本

2
在这里发生了一些更愚蠢的事情-忘记在我的测试方法中添加[Test]属性:)
Nikolai

NUnit 3测试适配器中似乎仍然存在此问题。请参阅Simoyd有关测试适配器体系结构的解决方案(x64与x86)。
巴特

1
这是不正确的答案。要运行测试,请选择“测试”->“测试设置”->“默认处理器体系结构”->“ x64”
Andrew Rondeau

182

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

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


额外+1,因为这也解决了代码覆盖率指标消失的问题。
Aidanapword

如果防火墙代理通过扩展和更新阻止了该URL,则使用该URL下载适配器。marketplace.visualstudio.com/...
亚瓦尔穆尔塔扎

请注意,您可能还需要禁用NUnit2测试适配器。
马克·帕蒂森

以这种方式获取它与从NuGet软件包管理器获取它之间有什么区别?
octavian

使用NuGet,您将可以访问nunit的api。使用这种方式,您将能够在测试资源管理器上运行测试(默认情况下,它仅运行MS测试)。
里卡多·弗朗萨(RicardoFrança)

57

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


3
确保检查程序集和程序的体系结构。即使您的解决方案或项目的平台可能已显式设置为x64,但如果您的测试体系结构不匹配,您仍将无法运行测试。
Dodzi Dzakuma

30

检查NUnit版本不匹配。当前可用的NUnit测试适配器仅适用于NUnit 2.6.4及更低版本。要从版本3.x降级NUnit,请转到程序包管理器控制台>更新程序包NUnit-版本2.6.4。

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


6
您长官,正好解决了我的问题!谢谢!有一个叫做NUnitTestAdapter.WIthFramework的nuget包,可以工作!
TheAkhemist '16

我对NUnit版本不匹配有类似的问题。我的某些(但不是全部)测试未显示在Test Explorer中,因此我尝试了各种建议,例如更新NUnit测试适配器。我以前曾将NUnit从3.6.1升级到3.7.1,但由于某些原因,我的一个项目仍在引用nunit.framework.dll版本3.6.1,而其他所有项目都在引用3.7.1。我更新了对3.7.1的引用,这成功了。到目前为止,我的测试还没有消失。手指交叉!
jrupe

23

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

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

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

在右上角搜索“ nunit”。

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

在此处输入图片说明


2
对我来说,这是行不通的。尝试卸载,它假装不见了,但重新启动后就在那里。我发现我以标准用户身份安装了NUnit,然后尝试以管理员身份将其卸载。VS对此没有任何说明。因此,解决方案是尝试在没有管理员权限的情况下启用它,反之亦然。
汤姆(Tom)

10

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

这是我的问题,我一定是无意中更改了构建配置设置,或者导致我的测试项目无法构建的某些事情(以前是这样)。因此,Test Explorer窗口正在查看过时的dll。对我来说很明显,这是在做完a之后Clean,看到我的大部分测试消失了,并且在rebuildbin文件夹的进一步检查显示根本没有构建这些项目之后再也没有回来。


尽管所有项目都已设置为在Configuration Manager中构建,但我必须手动构建每个测试项目才能使测试再次显示。
Noel Widmer

我手动构建了测试项目。那还不够。我必须做这个答案说的话。
杰瑞德(Jared)'18

10

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

就我而言,它有助于删除%localappdata%\Temp\VisualStudioTestExplorerExtensions。VS重新启动后,一切都像以前一样工作。


10

如果你正在使用VS 2017年和.NET的核心,如说在这里,你应该添加对测试框架NUnit的3.6.1,在测试跑步NUnit3TestAdapter 3.8.0-α1和测试SDK Microsoft.NET.Test.Sdk 15.0.0


3
我没有使用.NET Core,而是在移至VS2017时安装NUnit测试适配器为我解决了此问题。
Ciaran Gallagher

8
  1. 工具类
  2. NuGet软件包管理器
  3. 管理解决方案的NuGet软件包
  4. 浏览
  5. NUnitTestAdapter.WithFramework
  6. Ctrl + R,A建立/运行测试

在此处输入图片说明

使用NUnitTestAdapter.WithFramework可以确保NUnit和NUnit适配器的版本之间几乎没有/没有不一致(即“可以正常工作”)


对我来说,它将适配器更新为NUnitAdapter3后开始工作(VS菜单->工具->扩展和更新...)+将NUnit的NuGet页面从2.6.3升级到3.2.1。谢谢!
smily

1
这是唯一对我有用的东西-必须是“ WithFramework”(不仅仅是标准适配器)
Mani5556

4

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

在测试班

样品:

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!");
      }
   }   
}

1
TestFixtureSetup似乎已过时,更好的是<NUnit.Framework.OneTimeSetUp>
Jochen

1

我必须先卸载然后重新安装xunit.runner.visualstudio nuget软件包。我在尝试了所有上述建议之后尝试了此方法,因此可能是混合的。


1

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

将项目复制到物理解决了该问题。


0

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

如果右键单击,它将显示版本。删除它,然后右键单击参考>添加参考。

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

那对我有用!


0

我遇到了op提到的问题

我的情况是我被交给了一个旧项目,而测试实际上是被测系统的一部分。我认为他们正在使用外部测试运行程序。

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

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

我能够成功运行Nunit测试。


0

如果使用该TestCaseSource属性,请确保源存在并且遵守文档,否则将不会发现您的测试。


0

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


0

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


0

我也有这个问题,但原因不同。我正在将VS2017与F#4.0一起使用。

首先,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#内核。


0

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

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

重要说明:在输出窗口中看到下一个味精后,我找到了解决方案:

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


0

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


0

仅仅在这里添加$ .02,就在昨天遇到了类似的问题,我的168个测试都丢失了。我在这篇文章中尝试了几乎所有内容,尤其是确保我的NUnit版本是相同的,但都无济于事。然后,我想起了我将自己的测试分为播放列表的情况;并且在添加新测试时这些不会自动更新。所以,当我删除播放列表时,BAM!,我所有的测试又回来了。


-1

确保您的测试已正确标记为Test属性。如果所有测试仅用Explicit属性标记,则TestAdapter无法识别灯具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.