TL;DR
OpenCoverでVisual Studio2017でビルドした.NET Core/Standard
のプロジェクトのコードカバレッジを計測したいときは、.csproj
ファイルにDebugType
をfull
で追加すること。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.6</TargetFramework>
<DebugType>full</DebugType>
</PropertyGroup>
</Project>
OpenCoverでカバレッジが計測できない。
Visual Studio2017から.NET Core, .NET Standardのプロジェクトの構成ファイル(.csproj
)の形式が変更になっています。
++C++; // 未確認飛行 C - 新しい csproj 形式
これに合わせてか、ビルド時に生成されるPDBファイル(.pdb
)の情報ファイルの内容も変更になっているようです。
そのため、通常従来の形式を期待して.pdb
ファイルを解析するOpenCover
をそのまま使ってもカバレッジは計測できません。
ProcessModel: Default DomainUsage: Single
Execution Runtime: net-3.5
.Cannot instrument C:\projects\testable\Testable.Tests\bin\Debug\Testable.dll as no PDB/MDB could be loaded
.
Tests run: 2, Errors: 0, Failures: 0, Inconclusive: 0, Time: 1.4310438 seconds
Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0
Committing...
解決方法
これを解消するには、.pdb
ファイルの情報を従来形式にしてビルドする必要があります。カバレッジを計測したいプロジェクトの.csproj
ファイル内で該当属性をfull
にすることでOpenCover
でもカバレッジを計測できるようになります。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.6</TargetFramework>
<DebugType Condition="'$(Configuration)'=='DEBUG'">full</DebugType>
</PropertyGroup>
</Project>
上記例は前述の未確認飛行さんの記事を参考に、Debugビルド時のみに制限した設定にしています。