To include test coverage in your analysis, you’ll need to:
- provide the relevant analysis parameter to the SonarScanner for .Net
begin
step - execute your unit tests just after
build
and before the SonarScanner for .Net’send
step.
We support:
- Import of coverage reports from VSTest, dotCover, OpenCover, Coverlet, Altcover and NCover 3.
- Import of unit test results from VSTest, NUnit and xUnit.
We’ve documented here for each engine:
- what is the relevant analysis parameter to pass during the
begin
step. - how to generate the report.
In case you encounter problems along the way, check the Troubleshooting guide for .NET code coverage import.
Import test coverage reports
To import a test coverage report, during the Begin step you need to pass a parameter that points to the file that will be generated:
- for C#
sonar.cs.vscoveragexml.reportsPaths
for Visual Studio Code Coveragesonar.cs.dotcover.reportsPaths
for dotCoversonar.cs.opencover.reportsPaths
for OpenCover, Coverlet or Altcoversonar.cs.ncover3.reportsPaths
for NCover3 (deprecated)
- for VB .NET
sonar.vbnet.vscoveragexml.reportsPaths
for Visual Studio Code Coveragesonar.vbnet.dotcover.reportsPaths
for dotCoversonar.vbnet.opencover.reportsPaths
for OpenCover, Coverlet or Altcoversonar.vbnet.ncover3.reportsPaths
for NCover3 (deprecated)
You can find more details about this in Test Coverage & Execution.
Visual Studio Code Coverage
Run Unit Tests To Collect Code Coverage
"%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" /EnableCodeCoverage "UnitTestProject1\bin\Debug\UnitTestProject1.dll"
Convert the Code Coverage Report from Binary into XML
"%VSINSTALLDIR%\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output: "%CD%\VisualStudio.coveragexml" "%CD%\VisualStudio.coverage"
Note: If you use dotnet instead of vstest, the commands are slightly different, but the output is the same (.coverage
and .xml
files)
dotnet test ... --collect "DotnetCodeCoverage"
CodeCoverage.exe analyze /output: "%CD%\DotnetCoverage.coveragexml" "%CD%\DotnetCoverage.coverage"
External documentation
dotCover
Run Unit Tests To Collect Code Coverage
"%LOCALAPPDATA%\JetBrains\Installations\dotCover02\dotCover.exe" analyse /ReportType=HTML /Output="%CD%\dotCover.html" "/TargetExecutable=%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" /TargetWorkingDir=. "/TargetArguments=UnitTestProject1\bin\Debug\UnitTestProject1.dll"
OpenCover
Run Unit Tests To Collect Code Coverage
"%LOCALAPPDATA%\Apps\OpenCover\OpenCover.Console.exe" -output:"%CD%\opencover.xml" -register:user -target:"%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" -targetargs:"UnitTestProject1\bin\Debug\UnitTestProject1.dll"
Coverlet
Run Unit Tests To Collect Code Coverage in OpenCover format
coverlet UnitTestProject1\bin\Debug\UnitTestProject1.dll --target "%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" --targetargs "UnitTestProject1\bin\Debug\UnitTestProject1.dll" --format opencover
Altcover
Altcover by default is using the OpenCover format, that is already supported.
Add the package to your test project
dotnet add package AltCover
Run tests with coverage
dotnet test /p:AltCover=true
NCover 3 (deprecated)
Run Unit Tests To Collect Code Coverage
"%ProgramFiles(x86)%\NCover\NCover.Console.exe" "%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "UnitTestProject1\bin\Debug\UnitTestProject1.dll" //x "%CD%\coverage.nccov"
Import unit test results
To import a test execution report, during the Begin step you need to pass a parameter that points to the file that will be generated:
- for C#:
sonar.cs.vstest.reportsPaths
for VSTestsonar.cs.nunit.reportsPaths
for NUnitsonar.cs.xunit.reportsPaths
for xUnit
- for VB .NET
sonar.vbnet.vstest.reportsPaths
for VSTestsonar.vbnet.nunit.reportsPaths
for NUnitsonar.vbnet.xunit.reportsPaths
for xUnit
You can find more details about this in Test Coverage & Execution.
VSTest
Run Unit Tests and Save Results in the “TestResults” folder using a generated *.trx filename
"%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" /Logger:trx "UnitTestProject1\bin\Debug\UnitTestProject1.dll"
NUnit
Run Unit Tests and Save Results in file “NUnitResults.xml”
packages\NUnit.ConsoleRunner.3.7.0\tools\nunit3-console.exe --result=NUnitResults.xml "NUnitTestProject1\bin\Debug\NUnitTestProject1.dll"
or, for older NUnit 2
"%ProgramFiles(x86)%\NUnit 2.6.4\bin\nunit-console.exe /result=NUnitResults.xml "NUnitTestProject1\bin\Debug\NUnitTestProject1.dll"
xUnit
Run Unit Tests and Save Results in file “XUnitResults.xml”
packages\xunit.runner.console.2.1.0\tools\xunit.console.exe XUnitProject1\bin\Debug\XUnitProject1.dll -xml XUnitResults.xml