microsoft / microsoft/codecoverage

Code Coverage doesn't include projects not referenced by Tests Projects

Open
#14 2 comments 1 reaction 1 assignee View on GitHub

@jakubch1 is already working on this.

Since Mar 7, 2023.

enhancement
Dominant language
C#
Stars
125
Forks
17
Avg merge
1h 17m
Merged PRs (30d)
2

Description

Description

I noticed that projects which are not referenced by Tests projects are not included in the Coverage results, is there are way to get them included? It's important to include them because that does change overall percentage.

I'm creating this since https://stackoverflow.com/questions/42013013/analyze-code-coverage-with-visual-studio-skips-some-projects has not been answered, so hopefully you can help.

I've tried many different configurations in my .runnsettings, including a recursive ModulePaths/IncludeDirectories and specifically including the missing DLL.

I've been reading the docs but didn't find any settings which could make it, did I miss anything?

Thanks!

Steps to reproduce

Solution.sln (C:\source)
ProjectA
ProjectB
TestProject
References ProjectA only

coverage.runsettings:

<RunSettings>
  <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>
          <CodeCoverage>
            <Sources>
	      <Include>
	        <Source>C:\\source\\.*</Source>
	      </Include>
            </Sources>
            <UseVerifiableInstrumentation>False</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
  <RunConfiguration>
    <MaxCpuCount>0</MaxCpuCount>
    <BatchSize>1000</BatchSize>
    <ResultsDirectory>C:\results</ResultsDirectory>
  </RunConfiguration>
</RunSettings>

Once solution is built, I can see all DLLs and PDBs in their own files, and in TestsProject bin's folder only ProjectA.dll/pdb is there as expected.

Then run vstest

vstest.console.exe "C:\sources\TestProject\bin\release\TestProject.dll" /Settings:"C:\coverage.runsettings" /Logger:"trx" /TestAdapterPath:"c:\Source"

(don't think Logger and TestAdapterPath are important but that is how I've been running)

Expected behavior

.coverage included ProjectB on it, stating 0 covered blocks as that will for sure change the overall percentage

Actual behavior

ProjectB is not included, only ProjectA and TestProjects are present .

Diagnostic logs

I don't have a diag I can share now as I'm building some real projects, if really needed I can create a test solution and do it.

Environment

Microsoft (R) Test Execution Command Line Tool Version 17.0.0

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.