.net core projects code coverage visual studio 2017

前端 未结 6 1953
一整个雨季
一整个雨季 2021-02-01 05:15

I am using Visual Studio Enterprise 2017 to develop my .net core projects.

My solution also has some unit test projects and I want to view my current Code coverage.

相关标签:
6条回答
  • 2021-02-01 05:52

    You can try dotCover from Jetbrains. https://www.jetbrains.com/dotcover/features/

    dotCover is a .NET unit testing and code coverage tool that works right in Visual Studio, helps you know to what extent your code is covered with unit tests, provides great ways to visualize code coverage, and is Continuous Integration ready. dotCover calculates and reports statement-level code coverage in applications targeting .NET Framework, Silverlight, and .NET Core.

    It works fine with .NET Core & can show code coverage.

    Supports multiple unit testing frameworks, namely MSTest, NUnit, xUnit (all out of the box) and MSpec (via a plug-in).

    0 讨论(0)
  • 2021-02-01 05:52

    It looks like they are still working out the infrastructure (data collectors) bits before releasing. They are supposedly close.

    https://github.com/Microsoft/vstest/issues/579

    0 讨论(0)
  • 2021-02-01 05:57

    Based on this article (Code Coverage does not work in the IDE with netcoreapp1.x projects (VS 2017 RTM):

    Code coverage is currently not implemented for netcore projects. The work on this issue is in progress, it will come as part of post RTW releases.

    0 讨论(0)
  • 2021-02-01 05:57

    JDC's answer helped me to include my actual projects but I could not get rid of the test projects in the coverage report. I managed it by adding a "CodeCoverage.runsettings" in my XUnit test project with the following content:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- File name extension must be .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>
                <ModulePaths>
                  <Exclude>
                    <ModulePath>.*\.Tests.dll$</ModulePath>
                    <!-- Add more ModulePath nodes here. -->
                  </Exclude>
                </ModulePaths>
              </CodeCoverage>
            </Configuration>
          </DataCollector>
        </DataCollectors>
      </DataCollectionRunSettings>
    </RunSettings>
    

    The important part here is to exclude the test project in the ModulePaths section.

    0 讨论(0)
  • 2021-02-01 06:06

    Even with the "fixed" version I had issues (Only able to see code coverage for the test projects, not the actual projects I was testing). To workaround the problem I removed the <DebugType>Full</DebugType> from the test project.

    So, as a summary:

    1. Add package Microsoft.CodeCoverage (1.0.3) into your test project.

    2. Add the <DebugType>Full</DebugType> tag on the .csproj file on the projects we want to see code coverage values (inside <PropertyGroup> as explained on the vstest github link).

    3. Run unit tests.
    4. On the "Test Explorer" select passed unit tests, right click -> "Analyze Code Coverage for Selected Tests".
    5. You should see code coverage for your assemblies.

    My setup (Minimal setup?)

    • xunit (2.3.1)
    • xunit.runner.visualstudio (2.3.1)
    • Microsoft.NET.Test.Sdk (15.3.0)
    • Microsoft.CodeCoverage (1.0.3)
    • Visual Studio Enterprise 2017 (15.4.1)
    0 讨论(0)
  • 2021-02-01 06:06

    This issue has been fixed with Version 15.3:

    https://github.com/Microsoft/vstest-docs/blob/master/docs/analyze.md#coverage

    0 讨论(0)
提交回复
热议问题