Freigeben über


Code-Abdeckung

Tipp

Wenn Sie Microsoft.Testing.Platform.MSBuild (transitiv von MSTest, NUnit und xUnit runners eingeschlossen) verwenden, werden Codeabdeckungserweiterungen automatisch registriert, wenn Sie ihre NuGet-Pakete installieren – keine Codeänderungen erforderlich.

Sie können das Codeabdeckungsfeature verwenden, um zu bestimmen, welcher Anteil des Codes Ihres project durch codierte Tests wie Komponententests getestet wird. Um sich effektiv vor Fehlern zu schützen, sollten Sie die Tests für den Großteil Ihres Codes ausführen.

Microsoft Codeabdeckung

Die Microsoft Code Coverage-Analyse ist sowohl für verwalteten (CLR) als auch für nicht verwalteten (nativen) Code möglich. Sowohl statische als auch dynamische Instrumentierung werden unterstützt. Für diese Erweiterung ist das NuGet-Paket "Microsoft.Testing.Extensions.CodeCoverage " erforderlich.

Hinweis

Die nicht verwaltete (systemeigene) Codeabdeckung ist standardmäßig in der Erweiterung deaktiviert. Verwenden Sie die Flags EnableStaticNativeInstrumentation und EnableDynamicNativeInstrumentation, um diese bei Bedarf zu aktivieren. Weitere Informationen zur nicht verwalteten Codeabdeckung finden Sie unter Statische und dynamische systemeigene Instrumentierung.

Von Bedeutung

Das Paket wird mit der Microsoft .NET-Bibliothek ausgeliefert, die unter einem geschlossenen Lizenzierungsmodell kostenlos verwendet werden kann.

Weitere Informationen zur Microsoft-Codeabdeckung finden Sie auf der seite GitHub.

Options

Option Description
--coverage Erfassen der Code Coverage mit dem Tool dotnet-coverage
--coverage-output Der Name oder Pfad der erzeugten Abdeckungsdatei. Standardmäßig ist die Datei TestResults/<guid>.coverage.
--coverage-output-format Format der Ausgabedatei. Folgende Werte werden unterstützt: coverage, xml und cobertura. Der Standardwert ist coverage.
--coverage-settings XML-Code Coverage-Einstellungen.

Weitere Informationen zu den verfügbaren Optionen finden Sie unter settings und samples.

Hinweis

Der Standardwert in IncludeTestAssembly "Microsoft.Testing.Extensions.CodeCoverage" lautet false, während er zuvor in VSTest true war. Dies bedeutet, dass Testprojekte standardmäßig ausgeschlossen werden. Weitere Informationen finden Sie unter Code-Abdeckungskonfiguration.

Versionskompatibilität

Die folgende Tabelle zeigt die Kompatibilität zwischen verschiedenen Versionen von Microsoft.Testing.Extensions.CodeCoverage und Microsoft.Testing.Platform:

Microsoft.Testing.Extensions.CodeCoverage Microsoft.Testing.Platform
18.1.x 2.0.x
18.0.x 1.8.x
17.14.x 1.6.2

Hinweis

Um die beste Kompatibilität und die neuesten Features zu erzielen, empfiehlt es sich, die neuesten Versionen beider Pakete zusammen zu verwenden.

Bettdecke

Die Coverlet Microsoft Testing Platform Integration (coverlet.MTP) ist eine native Erweiterung für Microsoft.Testing.Platform, die coverlet.collector-Funktionalität implementiert.

Fügen Sie das coverlet.MTP NuGet-Paket zu Ihrem Test-project hinzu:

dotnet add package coverlet.MTP

Führen Sie Ihre Tests mit der Kennzeichnung --coverlet aus, um die Codeabdeckung zu erfassen.

dotnet test --coverlet

Oder führen Sie ihre ausführbare Testdatei mit der --coverlet Kennzeichnung aus:

dotnet exec <test-assembly.dll> --coverlet

Nach der Testausführung wird eine coverage.json Datei mit den Ergebnissen im aktuellen Verzeichnis generiert.

Options

Option Description
--coverlet Aktivieren sie die Codeabdeckungsdatensammlung.
--coverlet-output-format <format> Ausgabeformate für den Bericht über die Abdeckung. Unterstützte Formate: json, , lcov, opencover, coberturaund teamcity. Geben Sie den Befehl mehrfach an, um mehrere Formate einzuschließen.
--coverlet-include <filter> Fügen Sie Assemblys hinzu, die mit Filtern übereinstimmen, z. B. [Assembly]Type. Wiederholen Sie die Angabe, um weitere Filter hinzuzufügen.
--coverlet-include-directory <path> Fügen Sie zusätzliche Verzeichnisse für Quelldateien ein. Geben Sie mehrmals an, um weitere Verzeichnisse hinzuzufügen.
--coverlet-exclude <filter> Schließen Sie Assemblys aus, die mit Filtern übereinstimmen, z. B. [Assembly]Type. Wiederholen Sie die Angabe, um weitere Filter hinzuzufügen.
--coverlet-exclude-by-file <pattern> Schließen Sie Quelldateien aus, die mit Globmustern übereinstimmen. Spezifizieren Sie mehrmals, um weitere Muster hinzuzufügen.
--coverlet-exclude-by-attribute <attribute> Ausschließen von Methoden oder Klassen, die mit bestimmten Attributen versehen sind. Machen Sie mehrfache Angaben, um weitere Attribute hinzuzufügen.
--coverlet-include-test-assembly Schließen Sie die Testbaugruppe in den Abdeckungsbericht ein.
--coverlet-single-hit Beschränken Sie die Anzahl der Treffer für jede Position im Code auf eine.
--coverlet-skip-auto-props Überspringen Sie automatisch implementierte Eigenschaften in der Abdeckung.
--coverlet-does-not-return-attribute <attribute> Attribute, die Methoden als nicht zurückgebend kennzeichnen. Machen Sie mehrfache Angaben, um weitere Attribute hinzuzufügen.
--coverlet-exclude-assemblies-without-sources <value> Schließen Sie Assemblys ohne Quellcode aus. Werte: MissingAll, MissingAny, und None.

Weitere Informationen finden Sie in der Coverlet MTP-Dokumentation.