用于单元测试.NET Standard库的框架/Visual Studio项目类型是什么?

4
鉴于实现.net standard library的是底层实现(.Net framework, .Net Core(Windows/Linux等))。因此,API可能具有不同的行为。例如,TimeZoneInfo.Id会根据操作系统提供不同的结果(上次我检查是这样)。
那么如何进行单元测试呢?在Visual Studio中,我们可以创建.Net CorexUnit项目或.Net FrameworkxUnit项目。如何在两个不同的环境下运行相同的xUnit 测试呢?

"TimeZoneInfo.Id 根据操作系统提供不同的结果(截至我上次检查)... 那么这两个操作系统都设置为相同的时区、语言、文化等吗?https://msdn.microsoft.com/zh-cn/library/system.timezoneinfo.standardname(v=vs.110).aspx" - user585968
理想情况下,您需要多个单元测试项目,针对您想要支持的不同平台,并且它们都链接到您的.NET标准库。 - Lex Li
2个回答

7
最简单的方法是将测试项目多目标化。即,从模板创建一个.NET Core xUnit项目并更改
<TargetFramework>netcoreapp1.1</TargetFramework>

为了

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

请注意这里的复数/附加 s 的更改。复数形式允许您指定多个目标框架进行测试,因此您可以轻松添加多个 .NET Core 和 .NET Standard 的版本。
虽然VS集成的测试运行器目前只会运行第一个框架(请参见GitHub上的此跟踪问题),但控制台上的dotnet test将在所有指定的配置上运行您的测试。

-1

与其针对多个运行时,你可以使用一个测试平台,默认情况下能够运行 net standard 测试。Nuclear.Test 可以帮助你在多个平台上进行更完整的功能测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接