【问题标题】:nunit.framework not found running nunit against .NET Standard 1.4 xamarin project未找到针对 .NET Standard 1.4 xamarin 项目运行 nunit 的 nunit.framework
【发布时间】:2021-03-01 19:16:46
【问题描述】:

我有一个 .NET Standard 1.4 项目用于代替 Xamarin 解决方案中的 PCL。我正在尝试添加一个单元测试项目。

我已遵循我可以在其中找到的指南并执行以下操作:

我添加了一个引用我的 .NET Standard 项目的 .NET Core 2.0 项目并通过 NuGet 安装了以下内容:

  1. Microsoft.NET.Test.Sdk 15.5.0
  2. NUnit 3.9.0
  3. NUnit3TestAdapter 3.9.0

我添加了一个包含所有 NUnit 属性的超级简单的测试并运行它。

在 Visual Studio for Windows 上,使用 Resharper 测试运行程序可以完美运行测试。但是在 Visual Studio for Mac 上,使用内置运行器时,我得到 以下错误

错误:System.IO.FileNotFoundException:无法加载文件或 程序集“nunit.framework”或其依赖项之一文件名: 'nunit.framework'

再多的谷歌搜索或摆弄都无济于事。有人可以提出建议吗?

【问题讨论】:

  • 无法使用 Visual Studio for Mac 7.3.3 重现此问题。你能在这里或开发社区提供一个重现项目吗?
  • 更新:我可以用一个普通的空白解决方案来重现这个,其中只有一个测试项目。在这里复制:github.com/freever/VSMacTestProblemRepro
  • 这似乎是 VS Mac 7.4 中的一个问题。 VS Mac 7.3.3 工作正常。

标签: xamarin .net-core nunit .net-standard visual-studio-mac


【解决方案1】:

您的测试库不能是 .NET Standard 库。它需要是 netcoreapp 或 net full 框架。所以你需要将目标更改为netcoreapp2.0 或类似net461 的东西。或者,您可以将其设为多目标:

<TargetFrameworks>net461;netcoreapp2.0;netstandard2.0</TargetFrameworks>

这是由于 VSTest 和 Visual Studio 要求您的测试针对特定平台。仅 .NET Standard 的库无法做到这一点。

如果您选择多目标,则您的里程在 Visual Studio 中可能会有所不同。但是,命令行工具应该可以工作,并且您应该能够使用 dotnet test 轻松运行它,只需将其指向 csproj 文件以进行单元测试。

这也记录在 NUnit 文档中:https://github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard

如果您更改为 Xunit 等其他框架,这些限制不会改变。

【讨论】:

  • OP 明确指出I added a .NET Core 2.0 project referencing my .NET Standard project。测试库显然不是 .NET Standard 项目。如果是这样,它也根本无法在 Windows 上运行。
  • @NightOwl888 是正确的:我的应用程序代码是 .NET Standard 1.4,而我的测试代码是 .NET Core 2.0,如文档中所述:“您的测试程序集也必须是 .NET Core 或 . NET 4.x,而不是 .NET 标准。”
【解决方案2】:

这原来是 VS Mac 7.3.4 beta 中的一个错误,MS 正在修复它。

【讨论】:

    【解决方案3】:

    请尝试手动加载 nunit.framework 程序集并将其引用到测试项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      相关资源
      最近更新 更多