Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set a custom coverage result file path when running dotnet test --collect "Code coverage"?

I followed the instructions on http://tdc1tfsapp01:8080/tfs/DefaultCollection/SharpTop/_packaging?_a=package&feed=dayforce&package=OrchardCore.Cms.Web&version=1.0.20098.7+1bcd36b1f8efd5484af49f8ec39c21060a64391e&protocolType=NuGet and it does produce a binary coverage result file and surfaces a link to it on the build.

But, I want to convert it to Cobertura in order to publish on the build itself. It is a rather convoluted process, where one needs to:

  1. Download the https://www.nuget.org/packages/Microsoft.CodeCoverage/ package and locate CodeCoverage.exe inside.
  2. Run CodeCoverage.exe to convert the binary coverage result to the respective XML.
  3. Install the reportgenerator dotnet tool
  4. Run the reportgenerator tool to convert that XML to Cobertura
  5. Finally we can publish to the build

My problem is that I do not know where the binary result is placed during the build. So, my question is - can we customize its location?

like image 297
mark Avatar asked Oct 21 '25 04:10

mark


2 Answers

Found it. Three things need to be done:

  1. Turn off automatic publishing the test results from the DotNetCoreCLI@2 test command. This prevents it from injecting its own result directory.
  2. Pass your own directory in the -r parameter.
  3. Add an explicit task to publish the test results.

Here is how I run the tests:

- task: DotNetCoreCLI@2
  name: Test
  displayName: Test
  inputs:
    command: 'test'
    publishTestResults: false
    arguments: '-c Release --no-build -l trx -r "$(Build.StagingDirectory)\tests" --collect "Code coverage"'

And the coverage result would be $(Build.StagingDirectory)\tests\<SOME GUID>\*.coverage

like image 168
mark Avatar answered Oct 23 '25 21:10

mark


You can set the custom coverage path by using below argument is commands input:

--results-directory D:\Desired\Location\

example:

- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    projects: src/folder1/folder2/ProjectTests.csproj
    arguments: --results-directory D:\a\_work\_DesiredLocation --configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
like image 23
osim_ans Avatar answered Oct 23 '25 20:10

osim_ans



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!