.Net Core 2.0 中的代码覆盖率

Code Coverage in .Net Core 2.0

如何在 .Net Core 2.0 中生成代码覆盖率?

我尝试了以下方法:

"TestPlatform\vstest.console.exe" --collect:"Code Coverage"

但我收到此错误消息:

Data collector 'Code Coverage' message: Cannot find CodeCoverage.exe.

我尝试了 dotCover 最新版本 2017.2,我能够在本地机器上获得覆盖,但是当在 TFS Build 中同样是 运行 时,没有生成覆盖信息。

我不确定 TFS 中的 NetCore 测试任务何时会支持代码覆盖。

如何在 TFS 中发布 DotCover 的结果,以使用 DotCover 命令行为 .Net Core 生成 Coverage?

VSTest 任务无法 运行 .NET 核心测试,因为它使用测试平台版本 1。要 运行 .NET 核心测试,我们建议使用.NET 核心任务(预览版) 与测试命令。

但是,不支持代码覆盖率和其他数据收集,还没有代理支持。

We are fixing this issue as part of this https://github.com/Microsoft/vsts-agent/pull/1149/files Will update the thread once fix is gone and new agent is released. thread https://github.com/microsoft/vstest/issues/579#issuecomment-324401462

Source Link: VSTest task fails to execute tests in .NET Core 2.0 test project

很久没问这个问题了,但我认为我下面的回答将有助于在 .NET Core 2 上执行项目测试以及使用 DotCover 工具生成覆盖率报告。

  1. 下载并安装 Jetbrains dotcover 控制台设置
  2. 在命令行执行如下命令,将识别解决方案中的测试项目并生成HTML格式的覆盖率报告。您还可以生成不同的格式,如 JSON、NDependXML 或 DetailedXML。

dotcover analyse /TargetExecutable:"C:\Program Files\dotnet\dotnet.exe" /TargetArguments:"test Path_To_Your_Solution_File" /Output:report.html /ReportType:HTML

您还可以 运行 并通过 .csproj 文件生成测试覆盖率。

Coverlet 是作为 NuGet 包提供的跨平台代码覆盖率。

只需将它添加到您的测试项目中:

dotnet add package coverlet.msbuild

和运行它与dotnet test命令一起作为参数:

dotnet test /p:CollectCoverage=true

支持的格式:

  • json(默认)
  • lcov
  • 开盖
  • cobertura

我在这里做了更详细的实现:.Net Core Unit Test and Code Coverage with Visual Studio Code