image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Tiago Moreira
Tiago Moreira02/05/2025 19:28
Compartilhe

Testes unitários: Cobertura de testes

    No artigo anterior aprendemos como organizar nosso teste, como definir um bom nome para ele utilizando a técnica GIven-When-Then e fizemos o nosso primeiro método. Porém nossa classe não está totalmente testada! Existe uma métrica chamada de “cobertura de testes”. Ela nos diz quantos por cento do nosso sistema está testado. Lembre-se de que o método Sum possui uma condição! Caso um dos parâmetros de entrada seja menor que zero e o método de teste não validou este cenário. Usamos somente números acima de zero!

    Obs: lembrando que você pode encontrar neste link o projeto usado como base pro artigo.

    O fluxograma abaixo ilustra o funcionamento do método que estamos testando:

    image

    Um relatório facilitaria visualizar a cobertura de testes e, para a nossa sorte, isso já existe! O pacote coverlet.collector é adicionado por padrão ao se criar um projeto de teste com o MSTest ou xUnit. O Coverlet é uma biblioteca com o objetivo de medir a cobertura de código em projetos .NET.

    O primeiro passo é abrir seu terminal favorito e navegar até o diretório do projeto de teste. Então execute o comando abaixo.

    dotnet test --collect:"XPlat Code Coverage"
    

    Ele vai criar uma pasta chamada TestResults e dentro dela uma pasta com um nome aleatório. E nessa pasta um arquivo no formato XML chamado coverage.cobertura.xml contendo os indicadores de cobertura.

    image

    Obs: cada vez que você executar o comando, uma nova pasta com um novo arquivo será gerado.

    Agora precisamos instalar a ferramenta de linha de comando ReportGenerator através deste comando:

    dotnet tool install --global dotnet-reportgenerator-globaltool
    

    Esta ferramenta usará como base o arquivo XML que geramos para criar o relatório. Navegue até o diretório onde ele foi criado e execute o comando:

    reportgenerator -reports:"coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:HTML
    

    Como resultado teremos a geração do diretório coveragereport contendo um site estático.

    image

    Acessando o arquivo index.html aparecerá um sumário com a cobertura de testes. E podemos perceber que no card branch coverage está indicando que temos 50% de cobertura.

    image

    Mais abaixo temos uma lista das classes que estão disponíveis no projeto que está sendo testado e o indicador individual da cobertura de teste. Ao clicar na classe Calculator você terá esta visão:

    image

    Repare que temos algumas cores indicativas em cada linha:

    • Verde: indica que nosso teste testou aquela linha.
    • Amarelo: exibido em condicionais (como if ou swicth) e indicam que não testamos todas as possibilidades possíveis.
    • Vermelho: nenhum teste está validando aquela linha.
    • Cinza: não é testável.

    Você pode encontrar mais detalhes do ReportGenerator e todas as suas opções através deste link. Agora que aprendemos a identificar a nossa cobertura de testes, na continuação deste artigo vamos testar as partes restantes da nossa classe.

    Compartilhe
    Recomendados para você
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comentários (0)