web-dev-qa-db-ja.com

.netコアプロジェクトのコードカバレッジVisual Studio 2017

Visual Studio Enterprise 2017を使用して、.netコアプロジェクトを開発しています。

私のソリューションにはいくつかの単体テストプロジェクトもあり、現在のコードカバレッジを表示したいと思います。

[テスト]-> [コードカバレッジの分析]-> [すべてのテスト]をクリックしたとき。ユニットテストはすべて実行されましたが、コードカバレッジの結果では、ユニットテストプロジェクトのコードカバレッジのみが報告されたので、意味がありません。

質問1:あなたは私と同じ問題を経験していますか?これに対する解決策はありますか?また、コードカバレッジを報告するために、VSTSでビルド定義をセットアップする必要があります。

enter image description here

質問2:また、ユニットテストの1をデバッグするために右クリックしたとき。すべての単体テストを実行します。これはVS2017のバグですか?

Update1:​​このトピックを見つけました: https://github.com/Microsoft/vstest/issues/597

22
Hung Cao

「修正済み」バージョンでも問題がありました(テストプロジェクトのコードカバレッジのみを表示でき、実際にテストしていたプロジェクトは表示できません)。この問題を回避するために、テストプロジェクトから<DebugType>Full</DebugType>を削除しました。

したがって、要約として:

  1. パッケージMicrosoft.CodeCoverage(1.0.3)をテストプロジェクトに追加します。

  2. <DebugType>Full</DebugType>タグを.csprojファイルにコードカバレッジ値を表示するプロジェクトに追加します(説明どおり<PropertyGroup>内) vstest github link )で。

  3. 単体テストを実行します。
  4. 「テストエクスプローラー」で、合格した単体テストを選択し、右クリック->「選択したテストのコードカバレッジの分析」を選択します。
  5. アセンブリのコードカバレッジが表示されます。

私のセットアップ(最小セットアップ?)

  • 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)
37
JDC

JetbrainsからdotCoverを試すことができます。 https://www.jetbrains.com/dotcover/features/

dotCoverは、.NET単体テストおよびコードカバレッジツールであり、Visual Studioで正しく動作し、コードが単体テストでどの程度カバーされているかを把握し、コードカバレッジを視覚化する優れた方法を提供し、継続的インテグレーションに対応しています。 dotCoverは、.NET Framework、Silverlight、および.NET Coreを対象とするアプリケーションのステートメントレベルのコードカバレッジを計算して報告します。

.NET Coreで正常に動作し、コードカバレッジを表示できます。

複数のユニットテストフレームワーク、つまりMSTest、NUnit、xUnit(すべてそのまま)およびMSpec(プラグイン経由)をサポートします。

enter image description here

8
Hung Quach

この記事に基づいて( コードカバレッジはIDE with netcoreapp1.xプロジェクト(VS 2017 RTM

現在、コードカバレッジはnetcoreプロジェクトには実装されていません。この問題の作業は進行中であり、RTWのリリース後の一部として提供されます。

3

リリースする前にインフラストラクチャ(データコレクター)のビットをまだ処理しているようです。彼らはおそらく近いです。

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

1
J.Walker

この問題はバージョン15.3で修正されました。

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

1
Tim Pohlmann

JDCの回答は実際のプロジェクトを含めるのに役立ちましたが、カバレッジレポートでテストプロジェクトを取り除くことができませんでした。 XUnitテストプロジェクトに次の内容の「CodeCoverage.runsettings」を追加して管理しました。

<?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>

ここで重要なのは、ModulePathsセクションでテストプロジェクトを除外することです。

0
mJay