.NET 标准库的单元测试项目是否应该面向 .NET Core 以外的框架?



当您有一个 .NET 标准库时,测试项目需要面向实际平台。最合乎逻辑的选择(我假设(是面向 .NET Core,因为它在多个操作系统上运行,但也有可能面向多个平台,如 xUnit.net 文档所示:

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

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

对此:

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

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

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

我认为这有意义的唯一原因是,如果您担心平台API在.NET Framework和.NET Core之间的行为不同。

在大多数情况下,API 在不同平台的行为相同,但在某些情况下可能存在细微差异。此处记录了其中一些差异。

如果创建NETStandard库,则应考虑在希望看到使用情况的每个target platformruntime version上运行测试。 如果计划发布库,则无法确定谁将在哪种方案中引用它。

不仅目标平台之间存在差异,而且同一平台的一个版本到另一个版本的实现细节也在变化(请参阅此示例(。

这不是在测试平台,而是在测试您的库是否与该平台配合得很好。

最新更新