Dela via


Kodtäckning

Tips/Råd

När du använder Microsoft.Testing.Platform.MSBuild (ingår transitivt av MSTest, NUnit och xUnit-löpare) registreras kodtäckningstillägg automatiskt när du installerar deras NuGet-paket – inga kodändringar behövs.

Du kan använda funktionen för kodtäckning för att avgöra vilken andel av din project kod som testas av kodade tester, till exempel enhetstester. För att effektivt försvara dig mot buggar bör dina tester omfatta eller täcka en stor del av din kod.

Microsofts kodtäckning

Microsoft Code Coverage-analys är möjlig för både hanterad (CLR) och ohanterad (intern) kod. Både statisk och dynamisk instrumentering stöds. Det här tillägget kräver NuGet-paketet Microsoft.Testing.Extensions.CodeCoverage .

Anmärkning

Ohanterad (intern) kodtäckning är inaktiverad i tillägget som standard. Använd flaggor EnableStaticNativeInstrumentation och EnableDynamicNativeInstrumentation för att aktivera den om det behövs. Mer information om ohanterad kodtäckning finns i Statisk och dynamisk intern instrumentation.

Viktigt!

Paketet levereras med Microsoft .NET-bibliotek med stängd källkod och kostnadsfri licensmodell.

Mer information om Microsofts kodtäckning finns på sidan GitHub.

Alternativ

Alternativ Description
--coverage Samla in kodtäckningen med hjälp av verktyget dotnet-coverage.
--coverage-output Namnet eller sökvägen till den skapade täckningsfilen. Som standard är filen TestResults/<guid>.coverage.
--coverage-output-format Utdatafilformat. Värden som stöds är: coverage, xmloch cobertura. Standard är coverage.
--coverage-settings XML-kodtäckningsinställningar.

Mer information om tillgängliga alternativ finns i settings och samples.

Anmärkning

Standardvärdet IncludeTestAssembly för i Microsoft.Testing.Extensions.CodeCoverage är false, medan det brukade vara true i VSTest. Det innebär att testprojekt exkluderas som standard. Mer information finns i Code-täckningskonfiguration.

Versionskompatibilitet

Följande tabell visar kompatibiliteten mellan olika versioner av Microsoft.Testing.Extensions.CodeCoverage och 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

Anmärkning

För bästa kompatibilitet och de senaste funktionerna rekommenderar vi att du använder de senaste versionerna av båda paketen tillsammans.

Sängöverkast

Coverlet Microsoft Testing Platform Integration (coverlet.MTP) är ett inbyggt tillägg för Microsoft.Testing.Platform som implementerar coverlet.collector funktioner.

Lägg till NuGet-paketet coverlet.MTP i testprojektet:

dotnet add package coverlet.MTP

Om du vill samla in kodtäckning kör du dina tester med --coverlet flaggan:

dotnet test --coverlet

Eller kör ditt testprogram med flaggan --coverlet:

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

Efter testkörningen genereras en coverage.json fil som innehåller resultaten i den aktuella katalogen.

Alternativ

Alternativ Description
--coverlet Aktivera insamling av kodtäckningsdata.
--coverlet-output-format <format> Utdataformat för täckningsrapporten. Format som stöds: json, lcov, opencover, coberturaoch teamcity. Ange flera gånger för att inkludera fler än ett format.
--coverlet-include <filter> Inkludera sammansättningar som matchar filter, till exempel [Assembly]Type. Ange flera gånger för att kunna lägga till fler filter.
--coverlet-include-directory <path> Inkludera extra kataloger för källfiler. Ange flera gånger för att lägga till fler kataloger.
--coverlet-exclude <filter> Exkludera sammansättningar som matchar filter, till exempel [Assembly]Type. Ange flera gånger för att kunna lägga till fler filter.
--coverlet-exclude-by-file <pattern> Exkludera källfiler som matchar globmönster. Specificera flera gånger för att lägga till fler mönster.
--coverlet-exclude-by-attribute <attribute> Exkludera metoder eller klasser som är dekorerade med specifika attribut. Ange flera gånger för att lägga till fler attribut.
--coverlet-include-test-assembly Inkludera testsammansättningen i täckningsrapporten.
--coverlet-single-hit Begränsa antalet träffar till en för varje plats i koden.
--coverlet-skip-auto-props Hoppa över automatiskt implementerade egenskaper i täckningen.
--coverlet-does-not-return-attribute <attribute> Attribut som markerar metoder som inte returneras. Ange flera gånger för att lägga till fler attribut.
--coverlet-exclude-assemblies-without-sources <value> Exkludera sammansättningar utan källkod. Värden: MissingAll, MissingAnyoch None.

Mer information finns i coverlet. MTP-dokumentation.