Visual Studio 2017 年 .NET Core 2.0 项目的代码覆盖率
Code Coverage for .NET Core 2.0 projects in Visual Studio 2017
版本:15.4.1 - Visual Studio企业版 2017
我创建了一个简单的 .NET Core 2.0 库项目并向其中添加了一个 UnitTest 项目。当我 运行 测试 -> 分析代码覆盖率 -> 所有测试。代码覆盖率结果仅报告单元测试项目的代码覆盖率。
我已经根据Working with Code Coverage配置了项目。这是我的 .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<IsPackable>false</IsPackable>
<!-- Required in both test/product projects. This is a temporary workaround for https://github.com/Microsoft/vstest/issues/800 -->
<DebugType>Full</DebugType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.2.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.2.0" />
<!-- Required. Include this reference for coverage -->
<PackageReference Include="Microsoft.CodeCoverage" Version="1.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" />
</ItemGroup>
</Project>
更新:
我在解决方案中添加了与 .NET 4.6.2 项目相同的代码,并且再次 运行 代码覆盖率。正如您所期望的那样,它涵盖了 class 库:
所以我的 Visual Studio 已正确配置为 运行 代码覆盖率。至少对于 .NET 4.6.2。我还在新的 VS 安装和 VSTS 中尝试过它。
我创建了一个 repo with my sample code。其他人可以重现吗?
有一个我不完全理解的解决方法。
您必须将 <DebugType>Full</DebugType>
添加到 您需要涵盖的所有项目。不是单元测试本身。
版本:15.4.1 - Visual Studio企业版 2017
我创建了一个简单的 .NET Core 2.0 库项目并向其中添加了一个 UnitTest 项目。当我 运行 测试 -> 分析代码覆盖率 -> 所有测试。代码覆盖率结果仅报告单元测试项目的代码覆盖率。
我已经根据Working with Code Coverage配置了项目。这是我的 .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<IsPackable>false</IsPackable>
<!-- Required in both test/product projects. This is a temporary workaround for https://github.com/Microsoft/vstest/issues/800 -->
<DebugType>Full</DebugType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.2.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.2.0" />
<!-- Required. Include this reference for coverage -->
<PackageReference Include="Microsoft.CodeCoverage" Version="1.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" />
</ItemGroup>
</Project>
更新: 我在解决方案中添加了与 .NET 4.6.2 项目相同的代码,并且再次 运行 代码覆盖率。正如您所期望的那样,它涵盖了 class 库:
所以我的 Visual Studio 已正确配置为 运行 代码覆盖率。至少对于 .NET 4.6.2。我还在新的 VS 安装和 VSTS 中尝试过它。
我创建了一个 repo with my sample code。其他人可以重现吗?
有一个我不完全理解的解决方法。
您必须将 <DebugType>Full</DebugType>
添加到 您需要涵盖的所有项目。不是单元测试本身。