Visual Studio Enterprise 2017を使用して、.netコアプロジェクトを開発しています。
私のソリューションにはいくつかの単体テストプロジェクトもあり、現在のコードカバレッジを表示したいと思います。
[テスト]-> [コードカバレッジの分析]-> [すべてのテスト]をクリックしたとき。ユニットテストはすべて実行されましたが、コードカバレッジの結果では、ユニットテストプロジェクトのコードカバレッジのみが報告されたので、意味がありません。
質問1:あなたは私と同じ問題を経験していますか?これに対する解決策はありますか?また、コードカバレッジを報告するために、VSTSでビルド定義をセットアップする必要があります。
質問2:また、ユニットテストの1をデバッグするために右クリックしたとき。すべての単体テストを実行します。これはVS2017のバグですか?
Update1:このトピックを見つけました: https://github.com/Microsoft/vstest/issues/597
「修正済み」バージョンでも問題がありました(テストプロジェクトのコードカバレッジのみを表示でき、実際にテストしていたプロジェクトは表示できません)。この問題を回避するために、テストプロジェクトから<DebugType>Full</DebugType>
を削除しました。
したがって、要約として:
パッケージMicrosoft.CodeCoverage(1.0.3)をテストプロジェクトに追加します。
<DebugType>Full</DebugType>
タグを.csprojファイルにコードカバレッジ値を表示するプロジェクトに追加します(説明どおり<PropertyGroup>
内) vstest github link )で。
私のセットアップ(最小セットアップ?)
JetbrainsからdotCoverを試すことができます。 https://www.jetbrains.com/dotcover/features/
dotCoverは、.NET単体テストおよびコードカバレッジツールであり、Visual Studioで正しく動作し、コードが単体テストでどの程度カバーされているかを把握し、コードカバレッジを視覚化する優れた方法を提供し、継続的インテグレーションに対応しています。 dotCoverは、.NET Framework、Silverlight、および.NET Coreを対象とするアプリケーションのステートメントレベルのコードカバレッジを計算して報告します。
.NET Coreで正常に動作し、コードカバレッジを表示できます。
複数のユニットテストフレームワーク、つまりMSTest、NUnit、xUnit(すべてそのまま)およびMSpec(プラグイン経由)をサポートします。
この記事に基づいて( コードカバレッジはIDE with netcoreapp1.xプロジェクト(VS 2017 RTM )
現在、コードカバレッジはnetcoreプロジェクトには実装されていません。この問題の作業は進行中であり、RTWのリリース後の一部として提供されます。
リリースする前にインフラストラクチャ(データコレクター)のビットをまだ処理しているようです。彼らはおそらく近いです。
この問題はバージョン15.3で修正されました。
https://github.com/Microsoft/vstest-docs/blob/master/docs/analyze.md#coverage
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セクションでテストプロジェクトを除外することです。