您如何 运行 在 Visual Studio 2017/2019 中针对特定目标框架进行单元测试?
How do you run unit tests for a specific target framework in Visual Studio 2017/2019?
我真的很喜欢新的 .csproj
格式。它比可怕的(有限的)project.json
.
好多了
但是,我正在努力解决一件事。我已将我的(多个)测试项目合并为一个多目标项目。
<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>
但是,Visual Studio 到 select 目标框架中的测试资源管理器中似乎没有任何工具 - 它总是只运行第一个。我找到了一个解决方法 - 添加一个具有特定框架的 <TargetFramework>
元素...
<TargetFramework>net35</TargetFramework>
但是,有什么方法可以 select 目标框架而无需手动编辑 MSBuild (.csproj
) 文件?我正在 GUI 中寻找一些选项来执行此操作 - 特别是这样我就不必记住编辑 .csproj
文件以在调试测试之前切换框架,或者记住必须在之前删除此行发布。
使用 'or' 运算符在运行设置文件中使用 TargetFrameWorkVersion。
我知道这个问题是关于 VS 的,但我发现当针对多个框架 dotnet tests
命令 will run tests for all frameworks in <TargetFrameworks>
node:
时很有用
> 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 还可以识别多个目标并运行 自动测试每个目标:
目前最好的选择是更改目标框架在 csproj 中的顺序。
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>
如果要调试 net45 框架的单元测试,您需要将其更改为:
<PropertyGroup>
<TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>
在 Visual Studio 中执行此操作的 UI 实施起来相对简单,但截至此答案他们还没有这样做。
事实证明,微软终于在 Visual Studio 2019 年修复了这个问题(不确定具体时间)。
如果指定多个目标框架:
<TargetFrameworks>netcoreapp2.1;net451</TargetFrameworks>
GUI 现在显示:
并让您 运行 一次在所有目标平台上进行测试。
我真的很喜欢新的 .csproj
格式。它比可怕的(有限的)project.json
.
但是,我正在努力解决一件事。我已将我的(多个)测试项目合并为一个多目标项目。
<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>
但是,Visual Studio 到 select 目标框架中的测试资源管理器中似乎没有任何工具 - 它总是只运行第一个。我找到了一个解决方法 - 添加一个具有特定框架的 <TargetFramework>
元素...
<TargetFramework>net35</TargetFramework>
但是,有什么方法可以 select 目标框架而无需手动编辑 MSBuild (.csproj
) 文件?我正在 GUI 中寻找一些选项来执行此操作 - 特别是这样我就不必记住编辑 .csproj
文件以在调试测试之前切换框架,或者记住必须在之前删除此行发布。
使用 'or' 运算符在运行设置文件中使用 TargetFrameWorkVersion。
我知道这个问题是关于 VS 的,但我发现当针对多个框架 dotnet tests
命令 will run tests for all frameworks in <TargetFrameworks>
node:
> 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 还可以识别多个目标并运行 自动测试每个目标:
目前最好的选择是更改目标框架在 csproj 中的顺序。
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>
如果要调试 net45 框架的单元测试,您需要将其更改为:
<PropertyGroup>
<TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>
在 Visual Studio 中执行此操作的 UI 实施起来相对简单,但截至此答案他们还没有这样做。
事实证明,微软终于在 Visual Studio 2019 年修复了这个问题(不确定具体时间)。
如果指定多个目标框架:
<TargetFrameworks>netcoreapp2.1;net451</TargetFrameworks>
GUI 现在显示:
并让您 运行 一次在所有目标平台上进行测试。