-->

Code Coverage in .Net Core 2.0

2019-04-06 11:41发布

问题:

How can I generate code coverage in .Net Core 2.0?

I tried the following:

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

But I got this error message:

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

I tried dotCover latest version 2017.2 which I am able to get the coverage on the local machine, but when the same is run in the TFS Build no coverage information is generated.

I am not sure when NetCore Test task in TFS will get support for code coverage.

How can I publish the results from DotCover in TFS also, to use DotCover Commandline to generate the Coverage for .Net Core?

回答1:

VSTest task cannot run .NET core tests as it uses the Test platform version 1. To run .NET core tests, we recommend using the .NET core task(preview) with the test command.

However, Code coverage and other data collection is not supported yet, no agent support.

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



回答2:

Coverlet is a cross platform code coverage available as NuGet package.

Just add it on your test project:

dotnet add package coverlet.msbuild

And run it altogether with dotnet test command as parameter:

dotnet test /p:CollectCoverage=true

Supported Formats:

  • json (default)
  • lcov
  • opencover
  • cobertura

I made more detailed implementation about it here: .Net Core Unit Test and Code Coverage with Visual Studio Code



回答3:

It had been a long time since this question was asked, but I think my answer below will be helpful to execute tests for the projects on .NET Core 2 and to generate coverage report using DotCover tool.

  1. Download and install Jetbrains dotcover console setup
  2. On the command line execute the command as below, which will identify the test projects in the solution and generate coverage report in HTML format. You can also generate in different formats as JSON, NDependXML or DetailedXML.

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

You can also run and generate test coverage over .csproj file.