如何在Visual Studio 2017中运行特定目标框架的单元测试?

如何在Visual Studio 2017中运行特定目标框架的单元测试?

问题描述:

我真的很喜欢新的.csproj格式。它比可怕的(有限的)project.json好得多。如何在Visual Studio 2017中运行特定目标框架的单元测试?

但是,有一件事我正试图解决。我已将我的(多个)测试项目合并为一个多目标项目。

<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks> 

但是,似乎没有要在测试资源管理器在Visual Studio中选择目标框架任何工具 - 它始终只是运行第一个。我发现了一个解决办法 - 添加<TargetFramework>元素与特定的框架...

<TargetFramework>net35</TargetFramework> 

但是,有什么办法来选择目标框架,而不是诉诸手动编辑的MSBuild(.csproj)文件?我正在寻找GUI中的某些选项来实现此目的 - 特别是,我不必记住编辑.csproj文件以便在调试测试之前切换框架,或记住在发布之前必须删除此行。

使用'或'运算符在runsettings文件中使用TargetFrameWorkVersion。

+1

你能举个例子吗?另外,我还希望在GUI中有一些东西,因为我已经有了一个很好的解决方法。 – NightOwl888

+0

看起来像.runsettings文件仅支持Framework35,Framework40,Framework45值,并且不支持.NET Core。 –

我知道,问题是关于VS,但我觉得很有用,在<TargetFrameworks>节点针对多种框架dotnet tests命令will run tests for all frameworks时:

> dotnet test 
... 
Test run for [projectPath]\bin\Debug\netcoreapp1.1\XUnitTestProject.dll(.NETCoreApp,Version=v1.1) 
... 
Test run for [projectPath]\bin\Debug\net461\XUnitTestProject.dll(.NETFramework,Version=v4.6.1) 
... 

NCrunch还可以识别多个目标,并自动每个目标运行测试:

enter image description here

+0

对于某些可能有用,对于调试无用 - 特别是如果您有库并且唯一的调试方法是在Visual Studio中运行测试。 – NightOwl888

+0

@ NightOwl888,看起来不像VS当前有UI。尝试NCrunch - 单元测试的优秀工具,它支持通过右键单击测试覆盖的代码行来进行调试。 –

+0

谢谢,但此产品没有[开源许可](https://www.ncrunch.net/buy/faq#discount)。我们需要支持任何愿意加入我们团队的人,并且NCrunch的许可证不符合此要求。 – NightOwl888