I am running the NUnit tests (project in .Net Framework 4.5), as part of azure devops build pipeline.
- task: VSTest@2
inputs:
testAssemblyVer2: 'tests/**/*.Tests.dll'
pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/packages'
codeCoverageEnabled: true
displayName: 'NUnit Testing'
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: JaCoCo
summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.xml'
displayName: 'Publish Code Coverage'
// summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.coverage'
But I am not able to see the coverage report, all I see the download link for coverage results...
How can I convert the .coverage report to JaCoCo format? OR generate the report directly in JaCoCo format?
I have seen some solution for .Net Core (link), but none for .Net framework
Update:
As per the release to Azure Devops for Sprint 150
Therefore, the script in my illustration no longer needs to use the report generator tool directly to create the html report, and when publishing the coverage results, the directory containing those html reports doesn't need to be specified.
Edit:
The trick I've found for getting the coverage results from a .Net Framework project to show up on the Code Coverage tab is in the same line of thought to your linked article.
Don't use the VS Test Task
Running this task will allow you to collect coverage with a simple checkbox, but you then surrender your opportunity to provide the content for the Code Coverage Tab
Install tools directly
Use a Powershell task (or similar) to install the Coverlet and Report Generator tools directly. This allows you to use them on projects that are not .Net Core.
Use dotnet vstest through coverlet
It's my understanding that
dotnet test
doesn't play nice with .Net Framework projects/assemblies. However, we can still use thedotnet
command, which we know will be on the agent machine, but we need to use it as a mechanism to get to the vstest.console.exe.The Coverlet tool, as mentioned in the article you linked, will output coverage results in Cobertura format if you tell it to do so.
Publish results
Complete script sample
note: this script is pretty rough, so use it as a thought exercise for your individual situation.
If you're struggling to figure out the escaping of quotes and such with the Coverlet command, YOU ARE NOT ALONE. I used the
echoargs
commandlet from PSCX more times than I care to admit so I could see what was actually getting provided to the.exe
calls I was making.The Results!!
...because that's really what matters
Original Answer:
Because of the way the linked article you mentioned is installing and using the report generator global tool I would think you can still follow those guidelines for creating the HTML inline and chart report types.
I'm not sure what is meant or how it works when the article says,
I'm understanding that you can use the tool to create the HTML report from the .xml coverage results, and then publish the coverage results and report together with the
Publish Code Coverage
task.So it seems all you need is to have an .xml format of the .coverage tool.
I didn't get it working in straight powershell, but you could follow the instructions from the Report Generator documentation to write a C# utility to access the
Coverage.Analysis
library.You can use Publish Code Coverage Results task in azure devops pipeline to see code coverage result in Jacoco format.
for further information about setup and configuration , please check the blog in MSDN
https://docs.microsoft.com/hi-in/azure/devops/pipelines/tasks/test/publish-code-coverage-results?view=tfs-2015#q--a
Hope it helps.