如何让 Nunit 测试适配器框架与 .netcore 3.1 一起工作
How to get Nunit Test Adapter Framework working with .netcore 3.1
我在使用 .netcoreapp 3.1 构建我的 nunit 项目时似乎遇到了这个错误,而且我无法弄清楚我有什么不匹配的版本。我注意到这里有一个类似的 post 但有所不同,它说我应该有一个 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.WithFramework2.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>
NUnitTestAdapter.WithFramework 2.0.0 是一个 .net framework 包(仅受 NUnit 2.6 支持),而您正在创建一个 .net 核心应用程序。
鉴于NUnitTestAdapter.WithFramework的最后一次更新与VS2015相关,我建议您找一个不同的包。
不知道你是不是选错了NUnit测试适配器
根本不要使用那个包。由于 its description says,它仅适用于 运行 于 Visual Studio 2012 年发布的 NUnit2 项目。NUnit 2 至少已有 5 年历史。
NUnit 文档站点在 .NET Core and .NET Standard 中解释了如何在 .NET Core 中使用 NUnit。添加最新版本的 NUnit
、NUnit3TestAdapter
和 Microsoft.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
已经有了正确的包。在这种情况下,您只需要删除 过时的包
@Neil 尖锐的文章解释得很好。
确保您的项目面向 .Net Core 3.x 框架或更高版本。如果它是基于 .NET Standard 的项目,那么单元测试不会 运行。它说的是:
- .NET Standard 就像一个可移植库,因为它不针对
任何特定平台,但可以 运行 在任何支持的平台上。
Microsoft 决定将您的测试编译为针对
平台,以便他们知道 运行 你的测试和你在哪个平台下进行
获得您针对目标平台所期望的行为。
我在使用 .netcoreapp 3.1 构建我的 nunit 项目时似乎遇到了这个错误,而且我无法弄清楚我有什么不匹配的版本。我注意到这里有一个类似的 post 但有所不同,它说我应该有一个 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.WithFramework2.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>
NUnitTestAdapter.WithFramework 2.0.0 是一个 .net framework 包(仅受 NUnit 2.6 支持),而您正在创建一个 .net 核心应用程序。
鉴于NUnitTestAdapter.WithFramework的最后一次更新与VS2015相关,我建议您找一个不同的包。
不知道你是不是选错了NUnit测试适配器
根本不要使用那个包。由于 its description says,它仅适用于 运行 于 Visual Studio 2012 年发布的 NUnit2 项目。NUnit 2 至少已有 5 年历史。
NUnit 文档站点在 .NET Core and .NET Standard 中解释了如何在 .NET Core 中使用 NUnit。添加最新版本的 NUnit
、NUnit3TestAdapter
和 Microsoft.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
已经有了正确的包。在这种情况下,您只需要删除 过时的包
@Neil 尖锐的文章解释得很好。 确保您的项目面向 .Net Core 3.x 框架或更高版本。如果它是基于 .NET Standard 的项目,那么单元测试不会 运行。它说的是:
- .NET Standard 就像一个可移植库,因为它不针对 任何特定平台,但可以 运行 在任何支持的平台上。 Microsoft 决定将您的测试编译为针对 平台,以便他们知道 运行 你的测试和你在哪个平台下进行 获得您针对目标平台所期望的行为。