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> 添加到 您需要涵盖的所有项目。不是单元测试本身。