.NET标准库的单元测试项目是否应该针对除.NET Core之外的框架?

时间:2018-06-13 14:00:40

标签: testing .net-standard

当您拥有.NET标准库时,测试项目需要以实际平台为目标。最合乎逻辑的选择(我假设)是针对.NET Core,因为它运行在多个操作系统上,但也可以定位多个平台as demonstrated in the xUnit.net documentation

  

使用单个测试项目,我们可以针对多个目标框架运行测试。打开.csproj文件并更改:

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
     

对此:

<PropertyGroup>
  <TargetFrameworks>net452;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>

这样做是否有任何实际原因,即是否存在需要您定位多个平台的情况?

我能想到的唯一原因是要了解特定平台中的错误,这在.NET Framework中已经发生了几次。但感觉就像你会测试平台而不是你的库,所以我不确定这是否足够好。

2 个答案:

答案 0 :(得分:1)

我认为这是有道理的唯一原因是你担心平台API在.NET Framework和.NET Core之间表现不同。

在大多数情况下,API在不同平台上的行为相同,但可能会出现轻微差异的情况。其中一些差异记录在案here

答案 1 :(得分:0)

如果创建NETStandard库,则应考虑在希望看到其使用的每个target platformruntime version上运行测试。 如果您打算发布您的库,则不能确定谁会在哪种情况下引用它。

目标平台之间不仅存在差异,而且实现细节也从同一平台的一个版本更改为另一个版本(请参见this example)。

这并不是测试平台,而是测试您的库是否可以很好地与平台配合使用。