如何让Nunit测试适配器框架与.netcore 3.1一起工作



在使用.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>

NUnitTestAdapter.WithFramework 2.0.0是一个.net框架包(仅由NUnit 2.6支持(,您正在创建一个.net核心应用程序。

鉴于NUnitTestAdapter.WithFramework的上一次更新与VS2015有关,我建议您找到一个不同的包。

我想知道您是否只是选择了错误的NUnit测试适配器。

根本不要使用那个包。正如它的描述所说,它只适用于在VisualStudio2012中运行的NUnit2项目。NUnit 2至少有5年的历史。

NUnit文档站点解释了如何在.NET Core和.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已经有了正确的程序包。在这种情况下,您只需要删除过时的包

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

  • .NET标准就像一个可移植库,它不以任何特定平台,但可以在任何支持的平台上运行。Microsoft决定将您的测试编译为针对平台,让他们知道在哪个平台下运行测试获得您期望的针对平台的行为

最新更新