Compartilhar via


Cobertura de código

Dica

Ao usar Microsoft.Testing.Platform.MSBuild (incluso de forma transitiva por MSTest, NUnit e xUnit runners), as extensões de cobertura de código são registradas automaticamente quando você instala seus pacotes NuGet, sem necessidade de mudanças no código.

Você pode usar o recurso de cobertura de código para determinar qual proporção do código do projeto está sendo testada por testes de código, como testes de unidade. Para se proteger efetivamente contra bugs, os testes devem exercitar ou cobrir uma grande proporção do seu código.

Cobertura de código da Microsoft

A análise de Cobertura de Código da Microsoft é possível para código CLR (gerenciado) e não gerenciado (nativo). Há suporte para instrumentação estática e dinâmica. Essa extensão requer o pacote NuGet Microsoft.Testing.Extensions.CodeCoverage .

Observação

A cobertura de código não gerenciada (nativa) está desabilitada na extensão por padrão. Use sinalizadores EnableStaticNativeInstrumentation e EnableDynamicNativeInstrumentation para habilitá-lo, se necessário. Para obter mais informações sobre a cobertura de código não gerenciado, consulte Instrumentação nativa estática e dinâmica.

Importante

O pacote é fornecido com a biblioteca .NET da Microsoft em um modelo de licenciamento de código fechado e uso gratuito.

Para obter mais informações sobre a cobertura de código da Microsoft, consulte sua página GitHub.

Opções

Opção DESCRIÇÃO
--coverage Colete a cobertura de código usando a ferramenta de cobertura dotnet.
--coverage-output O nome ou o caminho do arquivo de cobertura produzido. Por padrão, o arquivo é TestResults/<guid>.coverage.
--coverage-output-format Formato de arquivo de saída. Os valores com suporte são: coverage, xmle cobertura. O padrão é coverage.
--coverage-settings Configurações de cobertura de código XML.

Para obter mais informações sobre as opções disponíveis, consulte settings e samples.

Observação

O valor padrão de IncludeTestAssembly em Microsoft.Testing.Extensions.CodeCoverage é false, enquanto ele costumava estar true no VSTest. Isso significa que os projetos de teste são excluídos por padrão. Para obter mais informações, consulte Code Coverage configuration.

Compatibilidade entre versões

A tabela a seguir mostra a compatibilidade entre diferentes versões de Microsoft.Testing.Extensions.CodeCoverage e 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

Observação

Para obter a melhor compatibilidade e os recursos mais recentes, é recomendável usar as versões mais recentes de ambos os pacotes juntos.

Cobertor

A Coverlet Microsoft Testing Platform Integration (coverlet.MTP) é uma extensão nativa para Microsoft.Testing.Platform que implementa coverlet.collector funcionalidade.

Adicione o pacote NuGet coverlet.MTP ao projeto de teste:

dotnet add package coverlet.MTP

Para coletar cobertura de código, execute os seus testes com o --coverlet flag:

dotnet test --coverlet

Ou execute o executável de teste com a flag --coverlet.

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

Após a execução do teste, um coverage.json arquivo que contém os resultados é gerado no diretório atual.

Opções

Opção DESCRIÇÃO
--coverlet Habilitar a coleta de dados de cobertura de código.
--coverlet-output-format <format> Formatos de saída para o relatório de cobertura. Formatos com suporte: json, , lcov, opencover, coberturae teamcity. Especifique várias vezes para incluir mais de um formato.
--coverlet-include <filter> Inclua assemblies que correspondem a filtros, como [Assembly]Type. Especifique repetidamente para adicionar mais filtros.
--coverlet-include-directory <path> Inclua diretórios extras para arquivos de origem. Especifique repetidamente para adicionar mais diretórios.
--coverlet-exclude <filter> Exclua assemblies que correspondem a filtros, como [Assembly]Type. Especifique repetidamente para adicionar mais filtros.
--coverlet-exclude-by-file <pattern> Exclua arquivos de origem que correspondam aos padrões globais. Para adicionar mais padrões, especifique repetidamente.
--coverlet-exclude-by-attribute <attribute> Exclua métodos ou classes decoradas com atributos específicos. Especifique repetidamente para adicionar mais atributos.
--coverlet-include-test-assembly Inclua o assembly de teste no relatório de cobertura.
--coverlet-single-hit Limite o número de ocorrências a um para cada local no código.
--coverlet-skip-auto-props Ignore as propriedades implementadas automaticamente na cobertura.
--coverlet-does-not-return-attribute <attribute> Atributos que marcam métodos como não retornando. Especifique repetidamente para adicionar mais atributos.
--coverlet-exclude-assemblies-without-sources <value> Exclua assemblies sem código-fonte. Valores: MissingAll, e MissingAnyNone.

Para obter mais informações, consulte a documentação do coverlet.MTP.