【问题标题】:How to get Nunit Test Adapter Framework working with .netcore 3.1如何让 Nunit 测试适配器框架与 .net core 3.1 一起使用
【发布时间】:2021-07-22 13:54:43
【问题描述】:

在使用 .netcoreapp 3.1 构建我的 nunit 项目时,我似乎遇到了这个错误,我无法弄清楚我有什么不匹配的版本。我注意到这里有一个类似的帖子,但有所不同,它说我应该有一个 Nunit 和 UnitTestAdapter 版本 3.9.0 但 VS 不允许我回滚,我不明白为什么我需要这样做。构建我的解决方案时出现错误:

如有任何帮助尝试解决此错误,我们将不胜感激?

Package 'NUnitTestAdapter.WithFramework 2.0.0' was restored using '.NETFramework,Version=v4.6.1, 
.NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, 
.NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v3.1'. 
This package may not be fully compatible with your project. 

当我有最新的包时,NUnitTestAdapter.WithFramework 2.0.0 如何与项目不兼容?

我的 test.csproj 是:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="App1.config" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Chromium.ChromeDriver" Version="2.37.0" />
    <PackageReference Include="Dapper" Version="2.0.90" />
    <PackageReference Include="DapperExtensions" Version="1.7.0" />
    <PackageReference Include="DotNetSeleniumExtras.WaitHelpers" Version="3.11.0" />
    <PackageReference Include="ExtentReports" Version="4.1.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
    <PackageReference Include="NUnit" Version="3.13.2" />
    <PackageReference Include="NUnit3TestAdapter" Version="4.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
    <PackageReference Include="NUnitTestAdapter.WithFramework" Version="2.0.0" />
    <PackageReference Include="RestSharp" Version="106.11.7" />
    <PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" />
    <PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
    <PackageReference Include="SpecFlow" Version="3.8.7" />
    <PackageReference Include="SpecFlow.Assist.Dynamic" Version="1.4.2" />
    <PackageReference Include="SpecFlow.NUnit" Version="3.8.7" />
    <PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.8.7" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
    <PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
    <PackageReference Include="WebDriverChromeDriver" Version="2.10.0" />
  </ItemGroup>

【问题讨论】:

  • 看起来您正在尝试使用 .net CORE 库和 .net FRAMEWORK 项目。
  • 我应该省略 .netcore 库吗?如果有怎么办?顺便用VS。
  • 对不起,看我的回答。

标签: c# .net-core nunit


【解决方案1】:

NUnitTestAdapter.WithFramework 2.0.0 是一个 .net framework 包(仅受 NUnit 2.6 支持),您正在创建一个 .net core 应用程序。

由于 NUnitTestAdapter.WithFramework 的最后一次更新是与 VS2015 相关的,我建议你找一个不同的包。

不知道你是不是选错了 NUnit 测试适配器。

【讨论】:

  • 完美,不知道为什么我首先将它放在那里,因为可以很容易地运行我的测试,而无需记住我正在使用 v2019。谢谢
【解决方案2】:

根本不要使用那个包。正如its description says,它仅适用于在 Visual Studio 2012 中运行的 NUnit2 项目。NUnit 2 至少有 5 年的历史。

NUnit 文档站点在.NET Core and .NET Standard 中解释了如何在 .NET Core 中使用 NUnit。添加最新版本的NUnitNUnit3TestAdapterMicrosoft.NET.Test.Sdk

在您的 csproj 文件中,您应该添加:

<ItemGroup>
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
  <PackageReference Include="NUnit" Version="3.9.0" />
  <PackageReference Include="NUnit3TestAdapter" Version="3.9.0" />
</ItemGroup>

之后,您可以在 Visual Studio 或命令行中运行测试:

dotnet test

更新

看起来您的csproj 已经有正确的包。在这种情况下,您只需要删除过时的包

【讨论】:

    【解决方案3】:

    @Neil 的尖锐文章很好地解释了这一点。 确保您的项目以 .Net Core 3.x 框架或更高版本为目标。如果它是基于 .NET Standard 的项目,则单元测试将不会运行。它是这样说的:

    • .NET Standard 就像一个便携式库,因为它不针对 任何特定平台,但可以在任何支持的平台上运行。 Microsoft 决定应编译您的测试以针对 平台,以便他们知道在哪个平台下运行您的测试以及您 获得您所针对的平台所期望的行为。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多