我创建了一个单元测试(使用 NUnit),它创建了一个实例,HttpConfiguration
并且使用经典的 csproj 格式可以正常工作。测试成功。我还使用新的 csproj 格式创建了一个相同的单元测试(使用 xUnit)。这个测试也成功了。
到现在为止还挺好。实际上,我想使用新的 csproj 格式创建一个 NUnit 测试。该测试因抛出对Newtonsoft.Json, Version=6.0.0.0System.IO.FileLoadException
的引用而失败。
我觉得这真的很奇怪。在我所有的测试项目中,除了提到的单元测试框架之外,我还添加了两个包: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 个测试的阻碍,因此它也不应该适用于失败的测试。
我的代码也可以在 GitHub 上找到: