Here is a quick guide on how to generate coverage and test data reports for several languages. For other languages or to know how to integrate these reports into SonarQube or SonarCloud, have a look at https://docs.sonarqube.org/latest/analysis/coverage/.
These commands were used when we implemented this feature. If you are using other commands feel free to share them as replies.
If you have trouble importing these reports, please ask for help on the dedicated "Get help" category.
Execute the unit tests and generate the coverage report. This can be done using the following command:
:run -c -d <output_directory> -r json --wait <timeout_minutes>
:run -c -d . -r json --wait 4
This will generate a file test-result-codecoverage.json in the provided directory.
Visual Studio Reports
Run the tests (
Debug\UnitTest1.dll in our example) enabling coverage, this is going to create a
C:\path\to\vstest.console.exe Debug\UnitTest1.dll /EnableCodeCoverage
Create code coverage XML report (
codeCoverage.xml in our case) using
codecoverage.exe (available in the Visual Studio installation folder under
Team Tools\Dynamic Code Coverage Tools directory).
C:\path\to\codecoverage.exe analyze /output:codeCoverage.xml TestResult\<RESULT_FOLDER>\<REPORT_NAME>.coverage
Converters to Generic Test Data format
coverage erase coverage run --branch --source=<python packages> <program> coverage xml -i.
Make sure to put all packages to measure into the --source parameter. That ensures that coverage will report zero coverage on all untouched files, as you most probably want to. To make this work, make sure to meet two prerequisites:
- use Coverage Tool 3.4+
- the packages should be packages, i.e. every directory on the way to the sources should contain an init.py file.
Command with Nose:
nosetests --with-xunit [tests to execute]
To get a more accurate execution time statistics make sure to use Nose 1.1.0+
By default, the nosetests command will generate the report nosetests.xml into a directory named nosetests created where the command is executed.
Command with pytest:
See the official documentation for more information on how to configure and run tests with pytest.
|Go Coverage Tool||
This content was previously part of SonarQube’s documentation but it applies for both SonarQube and SonarCloud so we though it would be better to share it here.