Cobertura de código: Como melhorar a qualidade dos testes

Nosso colega, Scott Hanselman, continua estudando testes e cobertura de código no .NET Core. Ele já conseguiu falar sobre algumas ferramentas para melhorar a qualidade dos testes e hoje fala sobre mais uma coisa : o AltCover . Olhe embaixo do gato!



Passo a palavra para Scott Hanselman .

No início desta semana, revi a colcha . Também há uma ferramenta OpenCover respeitada e vários projetos interessantes que tentam fazer com que o OpenCover funcione com o .NET Core, mas apenas no Windows.

Hoje vou estudar o AltCover Steve Gilham. Existem ferramentas de detecção de cobertura que usam a API de criação de perfil do .NET em tempo de execução. AltCover, por outro lado, refere-se a IL para isso .

Como o nome sugere, essa é uma abordagem alternativa à cobertura. Em vez de trabalhar com a API de criação de perfil do .NET em tempo de execução, ela adiciona a mesma IL extra ao que queremos criar, mesmo antes da execução. Isso significa que ele deve funcionar em quase todos os lugares, em qualquer plataforma, desde que o processo de execução tenha acesso para modificar o arquivo de resultado. Você pode combinar as várias plataformas usadas para instrumentação e as que são testadas.

O AltCover não é apenas parte do pacote NuGet, mas também está disponível como parte da .NET Core Global Tool, o que é ótimo.

dotnet tool install --global altcover.global 

Isso permite que você use o comando altcover em qualquer lugar sem adicioná-lo ao projeto.

Ainda assim, vou ler o guia de configuração rápida do AltCover e ver com que rapidez posso fazê-lo!

Vou instalá-lo no meu projeto de teste hanselminutes.core.tests,

 dotnet add package AltCover 

e então eu vou lançá-lo.

 dotnet test /p:AltCover=true 

Ótimo. Meus testes são executados normalmente, mas agora tenho o arquivo test.xml na pasta de teste. Se desejado, eu também poderia gerar relatórios de LCov ou Cobertura. O arquivo de cobertura.xml já pesa quase meio megabyte! Tem muitas informações úteis, mas como posso ver os resultados de forma legível?



O arquivo está no formato XML OpenCover, para que eu possa executar o ReportGenerator para o arquivo de cobertura e obter um monte de arquivos HTML. De fato, todo um site de minicobertura!

Baixei o ReportGenerator e o coloquei em uma pasta separada (esta é a melhor solução para a .NET Core Global Tool).

 c:\ReportGenerator\ReportGenerator.exe -reports:coverage.xml -targetdir:./coverage 

Certifique-se de usar o targetDir bom, caso contrário, você receberá dezenas de arquivos HTML desnecessários na pasta do projeto. Também vale a pena considerar a configuração de .gitignoring para a pasta e o arquivo de cobertura resultantes. Abra index.htm e avalie todas essas informações úteis!



Confira os Hotspots de risco acima! Eu tenho um CustomPageHandler com complexidade NPath significativa e duas visualizações com complexidade ciclomática significativa.

Avalie também a excelente cobertura da pista, conforme indicado aqui nos resultados do relatório de cobertura. Você pode perceber que o EnableAutoLinks sempre foi verdadeiro, então verifiquei apenas uma maneira. Talvez eu execute um teste negativo aqui e veja se há algum efeito colateral se EnableAutoLinks for falso.



Leia o tutorial completo do AltCover . Existem várias maneiras de executar essa ferramenta, desde ferramentas globais, ferramentas globais, testes dotnet, tarefas do MSBuild até a integração com o PowerShell!

  • Para exemplos de uso, clique aqui .
  • Para visualizar os modos de operação, clique aqui .
  • Para executar o AltCover a partir do teste dotnet, acesse a integração do teste dotnet.
  • Para executar o AltCover no MSBuild, clique aqui .
  • Para iniciar o AltCover e suas ferramentas relacionadas do Windows PowerShell ou PowerShell Core, clique aqui .

Existem muitos bons exemplos aqui e levei literalmente 10 minutos para obter um excelente relatório de cobertura com o AltCover e o .NET Core. Obrigado ao Steve da AltCover! Visite github.com/SteveGilham/altcover para obter um asterisco, relatar problemas no arquivo ou oferecer ajuda! E o mais importante, compartilhe projetos de código aberto como este com amigos e colegas.

Source: https://habr.com/ru/post/pt418517/


All Articles