Olá, pessoal!
Quem trabalha com desenvolvimento já passou por vários projetos onde devemos fazer testes unitários e medir a porcentagem de cobertura de código escrita.
Você que está começando, lembre-se que além de fazer um código bem escrito, você deve testá-lo, pois isso garante que seu código saia com muito mais qualidade.
Neste artigo, mostro como obter a porcentagem de cobertura de código, utilizando o OpenCover e ReportGenerator. São extensões gratuitas, que estão disponíveis no NUGET.
Vamos lá.
Primeiro criei uma solution com algumas camadas e adicionei uma camada de testes unitários.
Depois disso, precisamos instalar os pacotes do xUnit, para fazer testes unitários pelo NUGET, no projeto de unit test
PM> install-package xunit
PM> install-package xunit.runner.console
PM> install-package xunit.runner.visualstudio
Agora, vamos criar testes unitários para a funcionalidade de Pessoa.
Na classe PessoaAppService, na camada Application, existe um método que irá verificar se o salário da pessoa é maior que R$ 1000. Caso seja verdadeiro, irá mudar o salário para R$ 500 e caso contrário, mantém o valor.
Para esse cenário, existem duas condições a serem testadas.
Criei o método Deve_Manter_Salario na camada de UnitTest para testar uma das duas condições.
Para rodar o teste, clique em TestExplorer, que você verá o teste:
Depois rode o teste. Você verá se deu certo ou não desta forma:
Com isso, executamos umas das condições da classe PessoaAppService.
Agora precisamos saber qual a porcentagem desse teste em relação a todo meu código. Para isso vamos instalar o OpenCover e o ReportGenerator pelo NUGET.
PM> install-package OpenCover -version 4.6.519
PM> install-package ReportGenerator -version 3.0.2
Para rodar o relatório, existe esse .bat que adicionei a solução:
Em suma, esse .bat, executa o .exe do OpenCover para obter as métricas de cobertura de código e salva em um .xml. Depois disso ele executa .exe do ReportGenerator para gerar um relatório .html com as métricas.
Ao executar o .bat ele abrirá essa tela com as informações:
Vejam que com esse relatório podem ver o quanto estamos atingindo os testes em relação ao código.
Neste caso, temos 85.1% de cobertura:
Mas como descobrimos o que ainda falta para chegar aos 100%?
Ao clicar na classe em específico, o relatório mostra onde o teste passou. Neste caso, o teste Deve_Manter_Salario fez o que deveria fazer: calculou o salário e o mesmo não era maior que R$ 1000.
Agora precisamos fazer o outro teste para que, nessa classe, a cobertura chegue a 100%. O teste será o Deve_Ter_Salario_500. Teste que o salário será R$ 500.
Execute os testes:
Em seguida, rode o Relatório.bat e verifique a porcentagem dos testes
Observe onde os testes passaram pela classe:
Bom, essas ferramentas auxiliam e muito na qualidade da entrega do software, fazendo os testes e verificando se todos os testes estão sendo executados por todo código. Ao desenvolvermos testes, com certeza pegaremos várias situações que poderemos melhorar a qualidade do código.
Espero que tenham gostado. Segue a solution desse exemplo no meu GitHub: