Testes unitários em Java com JUnit

Este artigo mostra como criar testes unitários facilmente com o framework JUnit em Java.

[ Hits: 20.538 ]

Por: Josiel A. Santos em 18/10/2011 | Blog: http://blog.josielsantos.esy.es/


Colocando a mão na massa - classe exemplo, classe de teste



Agora vamos para a parte interessante. Criei uma classe aqui que não faz nada de legal, é a classe Matematica. Ela não faz nada de muito complicado, recebe dois números inteiros em seu construtor e possui métodos para somar, subtrair, multiplicar e dividir os números.

Não há nada de misterioso em sua implementação, veja o código:

Matematica.java: public class Matematica { private int n1; private int n2; public Matematica(int n1, int n2) { this.n1=n1; this.n2=n2; } public int add() { return this.n1+this.n2; } public int subtract() { return this.n1-this.n2; } public int multiply() { return this.n1*this.n2; } public int divide() { return this.n1/this.n2; } }

Não me preocupei com DivisionByZero, pois essa classe é apenas para fins didáticos. Como pode perceber, não tem nada de interessante nessa classe. Ela recebe dois números, e os métodos verificam se os operadores cumprem com o que prometem. :)

Testando a classe Matematica

Agora vamos testar a classe Matematica. Antes de ver código, vamos a algumas regrinhas básicas:
  • Todas as classes de teste devem herdar de junit.framework.TestCase;
  • Todos os métodos a serem testados devem ter o prefixo "test".

Agora vamos ver o código, depois as explicações:

MatematicaTest.java: import junit.framework.TestCase; public class MatematicaTest extends TestCase { private Matematica math=new Matematica(4, 2); public void testadd() { this.assertTrue(this.math.add()==6); } public void testsubtract() { this.assertTrue(this.math.subtract()==2); } public void testmultiply() { this.assertTrue(this.math.multiply()==8); } public void testdivide() { this.assertTrue(this.math.divide()==2); } public static void main(String[] args) { junit.textui.TestRunner.run(MatematicaTest.class); } }

Vamos por partes:

A classe MatematicaTest herda de junit.framework.TestCase, isso é obrigatório. A propriedade "math" é a instância da classe Matematica, criei-a para não ter que criar uma nova instância em todos os métodos de teste.

No método main, invocamos o programa TestRunner, que é um programinha de linha de comando. Fiz a invocação pelo método main, pois pela linha de comando ele não funcionou comigo. :(

Em todos os métodos "testX" temos uma chamada ao método "assertTrue" da classe junit.framework.Assert, ele é útil para avaliar se uma condição é verdadeira.

Pode-se especificar uma mensagem de erro que será exibida caso a condição seja falsa. Esta mensagem pode ser especificada no primeiro parâmetro do método, pois ele é sobrecarregado.

Depois da edição do programa acima, basta compilar e executar:

javac Matematica.java MatematicaTest.java
$ java MatematicaTest

....
Time: 0,002

OK (4 tests)

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Colocando a mão na massa - classe exemplo, classe de teste
   3. Outros métodos além do assertTrue
Outros artigos deste autor

diff e patch - Um guia sem hora pra acabar

Leitura recomendada

Linux com Java 1.7 + JBoss 7

Busca corporativa com Apache Solr - Motivação e conceitos

Trabalhando com classes e métodos em Java

Jmeter com qualidade e performance

Trabalhando com a interface gráfica em Java

  
Comentários
[1] Comentário enviado por f_Candido em 20/10/2011 - 00:25h

Olá,

Simples e elegante,

Parabéns


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts