【问题标题】:Framework/visual studio project type to use for unit testing .net standard libray?用于单元测试.net 标准库的框架/visual studio 项目类型?
【发布时间】:2017-08-13 08:30:35
【问题描述】:

鉴于.net standard library 的实现由带下划线的实现提供(.Net framework.Net Core(windows/Linux 等))。 API 的行为可能几乎没有什么不同。 TimeZoneInfo.Id 根据操作系统提供不同的结果(我上次检查过)。

那么,如何进行单元测试呢?在 Visual Studio 中,我们可以创建 .Net Core xUnit 项目或 .Net Framework xUnit 项目。如何在两个不同的环境中运行相同的xUnit 测试?

【问题讨论】:

  • "TimeZoneInfo.Id 根据操作系统提供不同的结果(上次我检查过)...." - 两个操作系统都设置为相同的时区;语言;文化等? msdn.microsoft.com/en-us/library/…
  • 理想情况下,您需要针对您想要支持的不同平台的多个单元测试项目,并且它们都链接到您的 .NET Standard 库。

标签: c# .net unit-testing .net-core .net-standard


【解决方案1】:

最简单的方法是多目标测试项目。即从模板创建一个 .NET Core xUnit 项目并更改

<TargetFramework>netcoreapp1.1</TargetFramework>

<TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>

请注意此处更改为复数/附加 s。复数形式允许您指定要测试的多个目标框架,因此您可以轻松添加多个版本的 .NET Core 和 .NET Standard。

虽然 VS 集成的测试运行器目前只会运行第一个框架(请参阅 this tracking issue on GitHub),但控制台上的 dotnet test 将在所有指定配置上运行您的测试。

【讨论】:

    【解决方案2】:

    您也可以使用能够在默认情况下运行网络标准测试的测试平台,而不是针对多个运行时。 Nuclear.Test 可以帮助您在多个平台上对您的实现进行更完整的功能测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多