【发布时间】:2020-07-18 13:55:08
【问题描述】:
我创建了一个单元测试(使用 NUnit),它创建了一个 HttpConfiguration 的实例,并且使用经典的 csproj 格式可以正常工作。测试成功。我还使用新的 csproj 格式创建了一个相同的单元测试(使用 xUnit)。这个测试也成功了。
到目前为止一切顺利。实际上,我想使用新的 csproj 格式创建一个 NUnit 测试。此测试因抛出 System.IO.FileLoadException 引用 Newtonsoft.Json, Version=6.0.0.0 而失败。
我觉得这很奇怪。在我所有的测试项目中,除了提到的单元测试框架之外,我还添加了两个包:Microsoft.AspNet.WebApi.Core 5.2.7 和 Newtonsoft.Json 12.0.3 .
这是我测试失败的 csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.7" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="NUnit" Version="3.2.0" />
</ItemGroup>
</Project>
这是在旧项目格式中成功而在新项目格式中失败的单元测试。
[Test]
public void CreateInstance()
{
var instance = new HttpConfiguration();
}
这是我的测试结果:
我真的很惊讶。我的测试使用旧的 csproj 格式使用 NUnit 成功。使用 xUnit 和新的 csproj 格式时,我的测试也成功了。因此,我使用哪种格式或框架并不重要。但是,当我将 NUnit 与新格式结合使用时,测试失败。这怎么可能,我怎样才能做到这一点? Newtonsoft.Json 的 12.0.3 版不是其他 2 个测试的阻碍,因此它也不应该适用于失败的测试。
我的代码也可以在on GitHub找到:
【问题讨论】:
-
请注意,这个问题已经得到解答,并且这个提交已经实现了解决方案:github.com/DaanAcohen/HttpConfiguration/commit/…
标签: unit-testing nunit xunit csproj csproj-user