Introdução

Sabemos hoje que o teste é uma parte muito importante na construção de um software. Vemos que, na engenharia de software, por exemplo, é uma etapa bem definida do desenvolvimento em cascata. Antes da implantação de um sistema, é muito importante antes o mesmo passar pela etapa de testes, seja de requisitos funcionais (como as funcionalidades do sistema) e os não funcionais (como integridade, usabilidade etc.).

        Metodologia

Mas, como iremos fazer tais testes, às vezes complexos, de forma fácil, em nosso sistema? 

Na linguagem JAVA, por exemplo, temos o JUNIT (Um framework open-source, criado por Erich Gamma e Kent Beck, com suporte à criação de testes automatizados na linguagem de programação Java), que nos facilita bastante a implementação e compreensão dos testes.

Então como vamos fazer nossos testes com o JUNIT?

Primeiramente, crie seu projeto JAVA.

 

 

Em seguida vamos criar métodos para uma classe qualquer da aplicação:

 

Será que quando criamos os métodos temos a certeza de que eles estão me retornando o valor correto? Ou em caso mais geral, será que estão fazendo o que realmente deveriam fazer?

 

Vamos verificar isso agora usando o JUNIT!

Clique com o botão direito na classe, aponte para ferramentas e depois clique em Criar testes JUnit.

 

 

Escolha inicialmente o JUnit versão 3 (e desative o inicializador e finalizador de testes e dê ok). Vemos que será criado um pacote para testes no projeto, além da classe de testes [nomedaclasse]Test.

 

Vimos que os métodos de teste test[nomedométodo] também foram criados automaticamente. Daí nós já percebemos uma vantagem que é economia de tempo para o programador, além do código ser aberto.

Modificando os testes, temos...

Utilizamos para leitura do JUnit o assertEquals, que vamos fazer uma análise: ( valor que eu espero que a função me retorne, valor que a função me retorna ). Se forem iguais, passa no teste.

Agora vamos testar! Clica com o botão direito na classe, e depois execute o arquivo.

Será mostrada a porcentagem dos testes que passaram. No nosso caso, todos os testes passaram, portanto, 100% 

Agora vamos supor que por algum descuido errássemos o código do método subtrair:

Como colocamos no teste, queríamos subtrair 5-3. O resultado é 2. porém como erramos o método, ele me retornaria 15. O JUnit nos mostra isso. 

São dois testes. Como um falhou, 50% passaram no teste. Veja que "se espera 2.0" mas a função me retorna 15.0

Temos outras asserções, como assertTrue e assertFalse. Passa pelo teste se o que está dentro de assertTrue for true e se o que está dentro de assertFalse for false.

Por que não passou pelo teste? Porque o que estava dentro do assertFalse era true, e para passar por ele devemos ter um false como resultado. 

Vamos supor agora que tenhamos milhares de testes e que queremos desprezar um deles. Por exemplo, nesse teste que o testSubtrair está dando erro, podemos desprezá-lo inserindo o prefixo DISABLED_ no nome da classe.

Também podemos fazer testes com outros tipos de dados!

Se quisermos que um teste dure um certo tempo, ou seja, que ele não demore, podemos fazer com que o teste falhe caso passe de um determinado tempo limite para ser executado.

Caso marquemos as opções inicializador e finalizador de teste, podemos configurar o JUnit para fazer algo antes de fazer um teste e depois de fazê-lo.

Conclusão 

Vimos que o framework JUnit pode nos trazer vários benefícios e vantagens, como:

  1. Permite a criação rápida de código de teste enquanto possibilita um aumento na qualidade do sistema sendo desenvolvido e testado;
  2. Não é necessário escrever o próprio framework;
  3. Amplamente utilizado pelos desenvolvedores da comunidade código-aberto, possuindo um grande número de exemplos;
  4. Uma vez escritos, os testes são executados rapidamente sem que, para isso, seja interrompido o processo de desenvolvimento;
  5. JUnit checa os resultados dos testes e fornece uma resposta imediata;
  6. Pode-se criar uma hierarquia de testes que permitirá testar apenas uma parte do sistema ou todo ele;
  7. Escrever testes com JUnit permite que o programador perca menos tempo depurando seu código;
  8. JUnit é LIVRE.

Referências

Wikipédia;

Bandeira, J.; JUnit, um framework para testes;