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)