【问题标题】:Should a unit test project for a .NET Standard library target frameworks other than .NET Core?.NET Standard 库的单元测试项目是否应该针对 .NET Core 以外的框架?
【发布时间】:2018-06-13 14:00:40
【问题描述】:

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

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

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

到这里:

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

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

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

【问题讨论】:

    标签: testing .net-standard


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      不仅目标平台之间存在差异,而且同一平台的一个版本到另一个版本的实现细节也会发生变化(参见this example)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-10
        • 2017-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多