{"id":226,"date":"2018-05-27T18:19:05","date_gmt":"2018-05-27T16:19:05","guid":{"rendered":"http:\/\/www.yves-ostwald.de\/blog\/?p=226"},"modified":"2018-05-27T18:29:58","modified_gmt":"2018-05-27T16:29:58","slug":"code-coverage-in-net-core-aktivieren","status":"publish","type":"post","link":"http:\/\/www.yves-ostwald.de\/blog\/2018\/code-coverage-in-net-core-aktivieren\/","title":{"rendered":"Code Coverage in .Net Core aktivieren"},"content":{"rendered":"<p>M\u00f6chte man sich in .Net Core die Code Coverage Results aller Tests anschauen, zeigt einem Visual Studio zun\u00e4chst einmal nur ein leeres Ergebnis. Dabei f\u00fchrt einem der Fehlertext: &#8222;No binaries were instrumented\u2026&#8220; erst einmal auf eine falsche F\u00e4hrte.<br \/>\n<!--more--><br \/>\nIm Internet findet man zu dieser Hinweismeldung zahlreiche L\u00f6sungsans\u00e4tze, welche f\u00fcr .Net Framework Solutions auch durchaus einen Blick wert sind.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yves-ostwald.de\/blog\/wp-content\/uploads\/2018\/05\/052718_1618_CodeCoverag1.png\"><\/p>\n<p>F\u00fcr unser .Net Core Programm m\u00fcssen wir aber zun\u00e4chst zwei wesentliche Einstellungen an unserem Projekt vornehmen, damit uns ein Ergebnis der Code Coverage angezeigt wird.<\/p>\n<ol>\n<li>Hinzuf\u00fcgen des NuGet Packages <em>Microsoft.CodeCoverage<\/em><\/li>\n<li>Erg\u00e4nzen der <em>PropertyGroup<\/em> im Zielprojekt<\/li>\n<\/ol>\n<h2>Microsoft.CodeCoverage NuGet Package<\/h2>\n<p>Damit wir unter .Net Core \u00fcberhaupt die Code Coverage-Engine nutzen k\u00f6nnen, m\u00fcssen wir zun\u00e4chst einmal unserem Testprojekt das notwendige NuGet Package hinzuf\u00fcgen. Mit einem rechtsklick auf Dependencies in unserem Testprojekt gelangen wir \u00fcber das Kontextmen\u00fc &#8222;Manage NuGet Packages\u2026&#8220; zum Package Manager.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yves-ostwald.de\/blog\/wp-content\/uploads\/2018\/05\/052718_1618_CodeCoverag2.png\"><\/p>\n<p>Im NuGet Package Manager suchen wir im &#8222;Browse&#8220; Tab nach &#8222;Microsoft.CodeCoverage&#8220;. Zum Erscheinen dieses Artikels lief die aktuelle Version unter v1.0.3.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yves-ostwald.de\/blog\/wp-content\/uploads\/2018\/05\/052718_1618_CodeCoverag3.png\"><\/p>\n<p>Mit einem Klick auf &#8222;Install&#8220; f\u00fcgen wir die Komponente unserem Testprojekt hinzu.<\/p>\n<h2>Anpassen der PropertyGroup<\/h2>\n<p>Damit wir nun auch ein Ergebnis erhalten m\u00fcssen wir noch in unserem Projekt die PropertyGroup anpassen, indem wir mit einem beliebigen Editor (z.B. Visual Studio Code) die *.csproj in unserem Solutionordner \u00f6ffnen. Hier f\u00fcgen wir die Zeile: <em>&lt;DebugType&gt;Full&lt;\/DebugType&gt;<\/em> hinzu.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yves-ostwald.de\/blog\/wp-content\/uploads\/2018\/05\/052718_1618_CodeCoverag4.png\"><\/p>\n<p>Beim Kompilieren erstellt Visual Studio uns nun vollumf\u00e4ngliche *.PDB Dateien, welche von der Code Coverage-Engine gelesen werden k\u00f6nnen.<br \/>\nLeider unterst\u00fctzt die Code Coverage-Engine derzeit nur &#8222;traditional, windows-only&#8220; Symbole-Files (PDBs). Portable PDBs (<em>&lt;DebugType&gt;Portable&lt;\/DebugType&gt;<\/em>) werden nicht unterst\u00fctzt und liefern leere Code Coverage Ergebnisse.<br \/>\nHaben wir alles richtig konfiguriert erhalten wir bei unserem n\u00e4chsten Testlauf ein entsprechendes Ergebnis:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.yves-ostwald.de\/blog\/wp-content\/uploads\/2018\/05\/052718_1618_CodeCoverag5.png\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chte man sich in .Net Core die Code Coverage Results aller Tests anschauen, zeigt einem Visual Studio zun\u00e4chst einmal nur ein leeres Ergebnis. Dabei f\u00fchrt einem der Fehlertext: &#8222;No binaries were instrumented\u2026&#8220; erst einmal auf eine falsche F\u00e4hrte.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[19],"tags":[],"class_list":["post-226","post","type-post","status-publish","format-standard","hentry","category-net-core"],"_links":{"self":[{"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/posts\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/comments?post=226"}],"version-history":[{"count":4,"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/posts\/226\/revisions"}],"predecessor-version":[{"id":230,"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/posts\/226\/revisions\/230"}],"wp:attachment":[{"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/media?parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/categories?post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.yves-ostwald.de\/blog\/wp-json\/wp\/v2\/tags?post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}