Nunit - 没有发现测试 [没有错误消息]
Posted
技术标签:
【中文标题】Nunit - 没有发现测试 [没有错误消息]【英文标题】:Nunit - doesn't discover tests [no error-message] 【发布时间】:2015-07-05 14:42:05 【问题描述】:Unit 拒绝 dsicover 或在程序集中运行我的测试。 Unit 不会产生类似“无法在程序集中找到测试”这样的错误消息。它根本没有发现我有测试。
我右击测试方法,测试输出显示:
发现测试开始 ------ 发现测试已完成:找到 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 测试资源管理器。单元框架版本 2.5.9.10348,运行时版本 v2.0.50727。我安装了单元测试采用者。我尝试重新安装它,但没有成功。
【问题讨论】:
那么您使用的是哪个版本的 NUnit?在不知道很难重现问题的情况下。您使用的是什么测试运行器? (NUnit-gui?其他的?)如果你运行 nunit-console 会发生什么? 如果没有扩展,我认为 VS 测试资源管理器不会选择 NUnit 测试......它会期待你使用微软的测试框架,它使用[TestClass]
和 [TestMethod]
测试中的属性...
我应该安装 nunit 测试适配器。如何验证?
如果您已安装适配器,您的测试项目应该有对 Nunit.VisualStudio.TestAdapter 的引用...或者您可以尝试通过 nuget 重新安装它
参考在那里,我可以确认已安装所采用的测试。我尝试从工具下的扩展和更新重新安装它。还是没有成功。
【参考方案1】:
您必须安装 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 扩展,而是安装 NUnit 3 TestAdapter for Visual Studio 2012(更新 1)。这适用于 NuGet 包:NUnit 3.9.0。
更新 2 - 2019 年 6 月 刚刚发布了 2.2 版本的 NUnit2 Adapter。它现在应该可以与 SDK 类型的项目以及 VS 2017 和 2019 一起正常工作。
【讨论】:
我遇到了这个问题,但我不明白这些部件是如何适合的。 NUnit Test Runner 需要安装在 Visual Studio 工具/扩展和更新部分。然后将 NUnit 作为 NuGet 的一部分与解决方案一起安装,确保运行器版本与 NUnit 相似。 这是一种选择,当您谈论 Test Runner 时,我假设您是指测试适配器。测试适配器 2.0 版适用于 NUnit 2.6.4 及更早版本。测试适配器 3.x 适用于 NUnit 3 及更高版本。测试适配器可以是库中的 vsix,也可以是 nuget.org 中的包。 @jeremy:不确定您的意思:VS2017 与 vsix 适配器一起工作,NUnit2 和 NUnit3 都使用各自的适配器。当然,它也适用于 nuget 版本。 如 cmets 中所述,3.x 适配器适用于 NUnit 3 及更高版本;但请注意,如果您有 NUnit 2.x 测试,它们将不会在 VS2017 及更高版本中被拾取。在我的情况下,我花了很长时间才意识到我正在处理 NUnit 2 测试,神秘地仍然没有找到,没有显示错误消息。您可能需要根据下面的@herb-f 答案将您的 NUnit 2.x 测试升级到 3.x,以便 3.x 适配器找到。 当您的代码库依赖于混合版本的 NUnit nuget 包时,也会出现此问题。我意识到我忘记更新依赖于较低版本 NUnit 的依赖项之一。我通过导航到 Visual Studio 中的一个类发现了这一点,并在文件底部显示了它的依赖项,清楚地表明 NUnit 是混合的【参考方案2】:从 Visual Studio 2013 升级到 VS 2017 时,我遇到了同样的问题。 就我而言,所有测试都是为 NUnit 2(不是 3)编写的,并且在 VS 2013 中运行良好。安装 VS2017 后,找不到任何测试。
问题是 VS2017 没有自动在我的 VM 上安装 NUnit 2。
解决方案是通过单击“工具”菜单安装 Nunit 2 测试运行器, 工具 |扩展和更新。接下来在右侧列表中选择 Online,然后在 Search 框中输入“NUnit”。然后,您可以添加适当的 NUnit 测试运行程序。
这可能适用于除 MSTest 之外的所有测试运行器。
【讨论】:
【参考方案3】:我的也是一样,但不同的是我将我的项目创建为 VS UnitTest 项目,而不是普通的 DLL。所以我创建了一个 DLL 并引用了所有的 nunit 程序集,现在发现了测试。
希望这会有所帮助。
【讨论】:
【参考方案4】:我也面临同样的问题。我的测试没有被发现。从 nuget 包管理器安装 NUnit3TestAdapter dll 后解决了我的问题。我的 Visual Studio 版本是 vs2017。
【讨论】:
这不提供问题的答案,应该是评论。请参阅When should I comment?。一旦你有足够的reputation,你就可以在任何帖子上comment;相反,provide answers that don't require clarification from the asker.【参考方案5】:NUnit30Settings.xml 可能存在问题。我有这个问题。在我的情况下,文件是空的。我不知道是什么原因。我将设置从 NUnitSettings.xml 复制到 NUnit30Settings.xml。这解决了我的问题。带有设置的文件位于 ...Users\[User]\AppData\Local\NUnit。
【讨论】:
【参考方案6】:在我的例子中,我使用了 TestCaseSource 属性。并传递了错误的源名称。
[Test]
[TestCaseSource("TestDataCaseSource")]
public void SomeTest1(string DataName, ITestData testData)
修复后,所有测试都会出现在测试资源管理器中
【讨论】:
【参考方案7】:对于我的案例 VS2017,在安装单元测试采用者 3 后,我只需使用 Nuget 包管理器将更新版本的 DLL 添加到我的解决方案中。
【讨论】:
【参考方案8】:这里有几件事要检查。 1) 确保我们将正确的 dll 引用到测试项目。在我们的例子中,它将是 NUnit3testAdapter 2)我们必须重新启动Visual Studio,以便我们的新安装扩展生效。
即使尝试了所有这些但仍然无法正常工作,请将其安装为 工具扩展和更新的一部分,然后从此处安装 NunitTest 适配器。 这肯定行得通。
【讨论】:
【参考方案9】:我遇到了这个问题,如果我安装了 NUnit 和 MSTest 框架,我可以使用提供的示例代码重现它,这会导致发现 0 个测试的问题。
一旦我删除了 MSTest.TestAdaapter 和 MSTest.TestFramework 包,上面的示例代码就可以工作了。
在我自己的代码中,我不得不将我的属性从 MSTest 更改为 NUnit 属性,例如[TestClass] 到 [TestFixture]。
所以基本上检查你没有添加任何胭脂冲突包。
【讨论】:
【参考方案10】:在我的情况下,消息“发现测试已完成 - 0 找到”的原因是我没有运行 Nuget 包的更新。
转到工具 -> Nuget 包管理器 -> 管理解决方案的 Nuget 包,然后单击更新选项卡。从那里您可以将 newset 更新更新到您已安装的 Nuget 包。
【讨论】:
【参考方案11】:我以为我有这个错误超过一天,到处寻找,重新加载所有测试 nuget 包等。我想我需要重新安装 Visual Studio。愚蠢的我,原来是测试运行器顶部的按钮。我不知何故选择了一个未显示任何测试的按钮。
解决方案: 单击测试资源管理器顶部的按钮以确保您获得正确的状态。
【讨论】:
以上是关于Nunit - 没有发现测试 [没有错误消息]的主要内容,如果未能解决你的问题,请参考以下文章