Möchte man sich in .Net Core die Code Coverage Results aller Tests anschauen, zeigt einem Visual Studio zunächst einmal nur ein leeres Ergebnis. Dabei führt einem der Fehlertext: „No binaries were instrumented…“ erst einmal auf eine falsche Fährte.

Im Internet findet man zu dieser Hinweismeldung zahlreiche Lösungsansätze, welche für .Net Framework Solutions auch durchaus einen Blick wert sind.

Für unser .Net Core Programm müssen wir aber zunächst zwei wesentliche Einstellungen an unserem Projekt vornehmen, damit uns ein Ergebnis der Code Coverage angezeigt wird.

  1. Hinzufügen des NuGet Packages Microsoft.CodeCoverage
  2. Ergänzen der PropertyGroup im Zielprojekt

Microsoft.CodeCoverage NuGet Package

Damit wir unter .Net Core überhaupt die Code Coverage-Engine nutzen können, müssen wir zunächst einmal unserem Testprojekt das notwendige NuGet Package hinzufügen. Mit einem rechtsklick auf Dependencies in unserem Testprojekt gelangen wir über das Kontextmenü „Manage NuGet Packages…“ zum Package Manager.

Im NuGet Package Manager suchen wir im „Browse“ Tab nach „Microsoft.CodeCoverage“. Zum Erscheinen dieses Artikels lief die aktuelle Version unter v1.0.3.

Mit einem Klick auf „Install“ fügen wir die Komponente unserem Testprojekt hinzu.

Anpassen der PropertyGroup

Damit wir nun auch ein Ergebnis erhalten müssen wir noch in unserem Projekt die PropertyGroup anpassen, indem wir mit einem beliebigen Editor (z.B. Visual Studio Code) die *.csproj in unserem Solutionordner öffnen. Hier fügen wir die Zeile: <DebugType>Full</DebugType> hinzu.

Beim Kompilieren erstellt Visual Studio uns nun vollumfängliche *.PDB Dateien, welche von der Code Coverage-Engine gelesen werden können.
Leider unterstützt die Code Coverage-Engine derzeit nur „traditional, windows-only“ Symbole-Files (PDBs). Portable PDBs (<DebugType>Portable</DebugType>) werden nicht unterstützt und liefern leere Code Coverage Ergebnisse.
Haben wir alles richtig konfiguriert erhalten wir bei unserem nächsten Testlauf ein entsprechendes Ergebnis: