Code coverage

Quando efetuamos um teste unitário estamos preocupados em testar o resultado que esta sendo esperado, mas se o nosso código a ser testado houver varias possibilidades com vários fluxos dentro dele, como garantir que o nosso teste passou por vários caminhos. É o Code Coverage que podemos testar todo o caminho do código e não somente seu resultado. 

O code coverage é um teste unitário com uma propriedade habilitada, esse teste também podemos dizer que é um teste de caixa branca.

Vamos iniciar criando o método que queremos testar.

 
  public static class Calcular

    {

        public static decimal Somar(decimal valorA, decimal ValorB)

        {

            if (valorA == 5)

                throw new Exception("Valor inválido");

            else if (valorA == 6)

                throw new Exception("teste");

 

            return valorA + ValorB;

        }

    }

Agora vamos preparar os testes unitários

 
   [TestMethod]

        public void TestCodeCoverage()

        {

 

            Decimal valorA = 3; // TODO: Initialize to an appropriate value

            Decimal ValorB = 6; // TODO: Initialize to an appropriate value

            Decimal expected =9; // TODO: Initialize to an appropriate value

            Decimal actual;

            actual = Demo.Artigo.Calculo.Calcular.Somar(valorA, ValorB);

            Assert.AreEqual(expected, actual);

      
        } 


Para habilitar o code coverage no menu Test >> Edit test Settings >> Local (local.testsettings).


E em Data and Diagnostics, vamos habilitar a opção Code Coverage



Como o método que iremos testar esta dentro de outro projeto, em Configure habilitaremos



Após executar o teste, temos que habilitar a janela Code Coverage Results para ver ser resultado e para isso no menu Test>>Windows>>Code Coverage Results.




Podemos ver que 69,23% do código foi coberto pelo teste unitário, e ao clicar duas vezes no método testado podemos abri-lo e teremos as linhas coloridas indicando o que foi coberto ou não.



A linha com a cor azul representa por onde o teste unitário conseguiu testar e a cor rosa por onde o teste não passou.