Criar testes unitários é uma ótima prática, e cada vez ganha mais espaço, existem vários frameworks para criação de testes unitários, e com o Visual Studio não é diferente, agora dependendo da complexidade do método que vamos testar, a criação dos testes unitários para cobrir 100% desse método pode gerar um custo alto para o projeto, e é nesse ponto que o Pex ajuda, ele analisa o código fonte, e gera os teste unitários informando valores de entrada, analisando os de saída, cobrindo todas as possíveis variações no código e procurando falhas.

Esse será só o primeiro artigo sobre o Pex, mostrando a forma mais simples de utilizá-lo, em breve mostrarei como criar testes parametrizados com o mesmo.

O Pex é uma ferramenta criada pelo Microsoft Research e o link direto para o projeto é http://research.microsoft.com/en-us/projects/pex , quando o Pex é instalado ele é integrado ao Visual Studio, testei aqui com o Visual Studio 2008 e com o 2010, no Visual Studio 2010 não consegui testar, deve ser por causa da versão Beta do 2010, assim que tiver novidades do funcionamento no Visual Studio 2010 posto aqui.

Agora vamos imaginar que temos no nosso projeto um método que faz um cálculo de salário, o código abaixo não é muito complexo mas tem várias opções que teríamos que levar em consideração na criação dos testes unitários.

   1: public static int Salario(int quantidadeHoras, int valorHora)

   2: {

   3:     if (quantidadeHoras <= 0 || valorHora <= 0)

   4:         return 0;

   5:  

   6:     if(quantidadeHoras > 160)

   7:     {

   8:         if(valorHora > 40)

   9:         {

  10:             valorHora -= 3;

  11:         }

  12:         else

  13:         {

  14:             valorHora += 5;    

  15:         }

  16:     }

  17:  

  18:     if(valorHora > 40)

  19:     {

  20:         valorHora -= 4;

  21:     }

  22:  

  23:     return valorHora*quantidadeHoras;

  24: }

 

Com o Pex instalado ele faz a análise do código do método, e vai criar testes passando parâmetros que validem toda a regra do meu método, para isso é só clicar com o botão direito no método e escolher a opção Run Pex.

RunPex

Nesse momento é que o Pex começa a analisar o código, e ele mostra uma janela no Visual Studio com os resultados dos testes feitos.

PexExplorationResults

Podemos ver acima que ele gerou 6 testes unitários para cobrir todo o método, nesse ponto ele ainda não gerou os testes no nosso projeto, e clicando em cada um desses testes podemos ver o código utilizado em cada teste.

PexExplorationResultsCode

Para criar os testes unitários no projeto selecione o teste desejado e clique no botão Save na imagem abaixo todos os testes estão selecionados, clicando no botão Save uma janela será aberta mostrando o nome do projeto de testes que será criado e também o diretório onde será criado., podemos modificar o nome e diretório sem problemas.

PexSave

Agora podemos ver no Solution Explorer o projeto de testes criado.

SolutionExplorer

Com os testes criado podemos utilizar todos os recursos de testes unitários que temos no Visual Studio como por exemplo ver a cobertura de código.

CoberturaCodigo

O Pex com certeza ajuda muito na criação dos nossos testes unitários, esse foi um exemplo simples de como utilizá-lo, em breve exemplos mais complexos com testes parametrizados.

Abraços.