Partilhar via


Cobertura de código

Sugestão

Ao usar o Microsoft.Testing.Platform.MSBuild (incluído transitivamente pelos runners MSTest, NUnit e xUnit), as extensões de cobertura de código são registadas automaticamente quando instala os seus pacotes NuGet — não são necessárias alterações de código.

Pode usar a funcionalidade de cobertura de código para determinar que proporção do código do seu project está a ser testada por testes codificados, como testes unitários. Para se proteger eficazmente contra erros, os seus 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 tanto para código gerido (CLR) como não gerido (nativo). A instrumentação estática e dinâmica é suportada. Esta extensão requer o pacote NuGet Microsoft.Testing.Extensions.CodeCoverage .

Observação

A cobertura de código não gerenciado (nativo) é 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 o modelo de licenciamento de código fechado da biblioteca Microsoft .NET, gratuito para usar.

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

Opções

Opção Description
--coverage Recolha a cobertura de código usando a ferramenta dotnet-coverage.
--coverage-output O nome ou caminho do ficheiro de cobertura produzido. Por padrão, o arquivo é TestResults/<guid>.coverage.
--coverage-output-format Formato de arquivo de saída. Os valores suportados são: coverage, xmle cobertura. A predefinição é coverage.
--coverage-settings configurações de cobertura de código XML.

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

Observação

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

Compatibilidade de 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.

Colcha

O Coverlet Microsoft Testing Platform Integration (coverlet.MTP) é uma extensão nativa do Microsoft.Testing.Platform que implementa coverlet.collector funcionalidades.

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

dotnet add package coverlet.MTP

Para obter cobertura de código, execute os seus testes com a --coverlet bandeira:

dotnet test --coverlet

Ou executa o teu executável de teste com a --coverlet flag:

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

Após a execução do teste, é gerado um coverage.json ficheiro contendo os resultados no diretório atual.

Opções

Opção Description
--coverlet Ativar a recolha de dados de cobertura de código.
--coverlet-output-format <format> Formatos de saída para o relatório de cobertura. Formatos suportados: json, lcov, opencover, cobertura, e teamcity. Especifique várias vezes para incluir mais do que um formato.
--coverlet-include <filter> Inclua assemblies que correspondam a filtros, como [Assembly]Type. Para adicionar mais filtros, especifique várias vezes.
--coverlet-include-directory <path> Inclua diretórios extra para ficheiros fonte. Especifique o comando várias vezes para adicionar mais diretórios.
--coverlet-exclude <filter> Exclua assemblies que correspondam a filtros, como [Assembly]Type. Para adicionar mais filtros, especifique várias vezes.
--coverlet-exclude-by-file <pattern> Exclua ficheiros fonte que correspondam a padrões globos. Especifique várias vezes para adicionar mais padrões.
--coverlet-exclude-by-attribute <attribute> Exclua métodos ou classes decoradas com atributos específicos. Especifique várias vezes para adicionar mais atributos.
--coverlet-include-test-assembly Inclua o conjunto de teste no relatório de cobertura.
--coverlet-single-hit Limite o número de acertos a um para cada localização no código.
--coverlet-skip-auto-props Ignorar as propriedades implementadas automaticamente na cobertura.
--coverlet-does-not-return-attribute <attribute> Atributos que marcam métodos como não retornando. Especifique várias vezes para adicionar mais atributos.
--coverlet-exclude-assemblies-without-sources <value> Exclua assemblies sem código-fonte. Valores: MissingAll, MissingAny, e None.

Para mais informações, consulte a Documentação coverlet.MTP.