Configure the location of .coverage file when using /Enablecodecoverage in vstest.console.exe via command line

codecoverage.exe command line options
codecoverage.exe visual studio 2019
dotnet test runsettings
convert coverage file to xml
jenkins vstest code coverage
reportgenerator coverage file
dotnet test code coverage
vstest reportgenerator

Is there a way to set the location of where the .coverage file would be located if we set /Enablecodecoverage in vstest.console.exe?

I did not see an option in the command line call itself. Is it to be set in the .runsettings file?

VSTest.Console.exe command-line options, VSTest.Console.exe is the command-line tool to run tests. You can specify several options in any order on the command line. These options are listed in You can configure the number of cores to use in a settings file. /​Enablecodecoverage, Enables data diagnostic adapter CodeCoverage in the test run. To view results from a previous session, choose Import Code Coverage Results, navigate to the TestResults folder in your solution, and import a .coverage file. The coverage coloring might be incorrect if the source code has changed since the .coverage file was generated. To make results readable as text, choose Export Code Coverage Results.

You can change the name with a CoverageFileName node in a runsettings file and I believe set the output location with a ResultsDirectory node like so:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <!-- Path relative to directory that contains .runsettings file-->
    <ResultsDirectory>.\TestResults</ResultsDirectory>
  </RunConfiguration>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CoverageFileName>myname.coverage</CoverageFileName>
          <CodeCoverage>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

Then run from command line:

vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:myrunsettings.runsettings

Note: I would appreciate if someone could test that as I don't have Visual Studio 2019 Enterprise and as of 2019, Enterprise is required to gather code coverage (it was available previously due to a bug).

VSTest Runner, A common use of a .runsettings file is to customize code coverage analysis. Place a run settings file named ".runsettings" at the root of your solution. To run tests from the command line, use vstest.console.exe, and specify the settings file vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage  The following command runs VSTest.Console.exe with several options. It runs the tests in the myTestFile.dll file in an isolated process and uses settings specified in the Local.RunSettings file. Additionally, it only runs tests marked "Priority=1", and logs the results to a .trx file.

To generate the .coverage file to a specified directory you will have to use CodeCoverage.exe with vstest.console.exe. Following will be exact command:

"%VSINSTALLDIR%\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" collect /output:"%CD%\VisualStudio.coverage" "%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "UnitTestProject1\bin\Debug\UnitTestProject1.dll"

Specify the path and name of your coverage file in output parameter above. You don't even have to specify /EnableCodeCoverage.

Code Coverage and Profiling (.NET COBOL), GitHub is home to over 50 million developers working together to host and review code, It's not possible to define a filename and path for the .coverage file. vstest.console.exe *.dll /EnableCodeCoverage https://github.com/microsoft/​vstest-docs/blob/master/docs/configure.md#using-command-line  It's not possible to define a filename and path for the .coverage file. Steps to reproduce. Make a CodeCoverage with /EnableCodeCoverage and try to define a path and a name for the .coverage file. Expected behavior. A file with a user defined name in a user defined path. Actual behavior. A random filename in a random foldersystem. Environment

The Command Line, GitHub is home to over 50 million developers working together to host it with a .​runsettings file, independend of /EnableCodeCoverage # This leads to vstest.​console.exe ignoring the /EnableCodeCoverage You can enable it by using /​EnableCodeCoverage or /collect:"Code Coverage" command line  This leads to vstest.console.exe ignoring the /EnableCodeCoverage parameter. I tried disabling the DataCollector via enabled=false, which leads to no code coverage independent of /EnableCodeCoverage. Steps to reproduce. See description. Expected behavior

Configure unit tests with a .runsettings file, Vstest.console.exe = This is the command-line used to execute tests test with code coverage in a command line, you invoke /EnableCodeCoverage switch. To use the .runsettings file, in Visual Studio, click on Test, Test Settings, 3) Download and Install VSAI (IBM Database Add-Ins for Visual Studio) from IBM's site:. I have generated .coverage file using vstest.console.exe and also I have exported the xml file by opening and exporting .coverage file. The final exported file contains .coveragexml extension, and this is xml file basically which has all the details of the tests and coverage report with source code linkgae.

CodeCoverage with user defined filename and path for .coverage , Import of coverage reports from VSTest, dotCover, OpenCover, Coverlet and NCover 3. during the Begin step you need to pass a parameter that points to the file that will be \Microsoft\TestWindow\vstest.console.exe" /​EnableCodeCoverage Note: If you use dotnet instead of vstest, the commands are slightly different,  A common use of a .runsettings file is to customize code coverage analysis. Specify a run settings file Run settings files can be used to configure tests that are run from the command line , in the IDE, or in a build workflow using Azure Test Plans or Team Foundation Server (TFS).

Comments
  • Definitely a lot of helpful information here, and a big start. What I was really hoping to do was to control the exact name and path of the output .coverage file, i.e. no date/time or guid, in order to use it as an input for further processing. Seems like otherwise, I need to get that path by parsing the test output.
  • @WilliamJockusch sorry for late reply see the Edit and Edit 2 in the answer.
  • @AsifAli72090 Thanks for Edit2. I am using vstest.console.exe Microsoft (R) Test Execution Command Line Tool Version 15.8.0, which reports /UseVsixExtensions is getting deprecated. Please use /TestAdapterPath instead. Is there other way to generate the .coverage fiel under the directory TestResults, instead of the subdircectory like TestResults\c193b54b-d7fe-4617-9b4c-0fafd541bcd6