Resultado de imagem para coverlet test

Cobertura de testes com coverlet

Alef Carlos
Bee Lab Academy
3 min readJan 8, 2019

--

Esse artigo é a última parte da série sobre introdução de testes unitários.

Bom dia. Boa tarde. Boa noite.

Vamos abordar nesse artigo um assunto interessante: Cobertura de testes.

É uma métrica que extraímos a partir do testes criados que nos informa qual é a porcentagem de linhas de códigos que nossos testes cobrem.

Esse número pode ser usado para restrição de uma entrega de software, por exemplo.

Em nosso projeto de teste vamos instalar uma ferramenta chamada coverlet que adicionará funcionalidades ao comando dotnet test.

Executar o comando no seu terminal — na raiz do projeto.

dotnet add .\Problems.Tests\Problems.Tests.csproj package coverlet.msbuild

coverlet é uma ferramenta multi-plataforma então não se preocupe se você usa Windows ou Linux.

Agora podemos passar um parâmetro para o comando dotnet test:

dotnet test /p:CollectCoverage=true /p:Exclude=[xunit.*]*

O argumento /p:Exclude é necessário na versão 2.5.0, pois foi incluída uma nova feature no coverlet que permite extrair relatórios de pdb, então alguns pdbs do xUnit existem em nosso projeto, mas queremos ignorá-los. Veja nessa issue.

Para saber todas os possíveis parâmetro e suas utilidades ler README do projeto no GitHub,

Quando finalizar a execução dos testes, o output acima será exibido contendo as métricas.

Para cada projeto referenciado no projeto de teste será criada uma linha de Module com as métricas especificas.

No painel de baixo é exibida a somatória e também a média das métricas.

Line — Significa a quantidade de linhas cobertas pelo seus testes.

Branch — Significa a quantidade de possíveis caminhos que estão cobertos pelo seus testes. Sabe o if..elseif..else… ?

Method — A quantidade de métodos cobertos pelos seus testes.

Alterando um teste

Vamos alterar o método IsMultipleOf — no projeto Problems — para adicionar uma validação de número natural, ou seja, somente os números positivos podem ter seu múltiplo calculado.

Como pode ser visto adicionando mais uma validação. Ao executar os testes, o seguinte resultado é apresentado:

Temos 100% dos métodos cobertos, porém 98,6% de linhas não estão cobertas.

Vamos então adicionar mais testes para cobrir esse cenário. No arquivo HelpersTest.cs:

Adicionamos mais 2 testes para garantir que estamos lançando exceção quando informados números negativos nos parâmetros da função.

E agora executando novamente os testes obtendo as métricas:

Os códigos estão nesse repositório.

Por enquanto é isso pessoal !

Referências

--

--

Alef Carlos
Bee Lab Academy

Desenvolvedor por paixão, arquiteto de software por profissão.