segunda-feira, 7 de janeiro de 2008

Devo testar os métodos que não alteram parâmetros nem retornam nada?

Isso é uma questão meio filosófica, pois, qual a necessidade de testar um método que não "faz nada" ?

Bem, se você ainda não imaginou a situação, lá vai um método da classe Manager:
0: public void reordenar(Object obj, boolean up)
1: {
2: getDao().reordenar(obj,up);
3: }
Com certeza o método reordenar da classe Dao faz muita coisa, e o teste dele será bem útil (sem nenhuma dúvida), mas o que faço com o método reordenar da classe Manager?

Começando pela premissa de que tudo pode e deve ser testado, então, devemos implementar um teste para este método.

Neste caso em particular, o método é muito simples, mas ele poderia não ser e ter a mesma característica, então, consideremos as várias possibilidades de quebra:

Primeiro imagine, que em qualquer parte do código pode haver um objeto nulo, como neste caso o getDao() poderia tranquilamente retornar null e disparar um NullPointerException na sequência.

Desta forma, é preferível fazer o teste sem nenhum "assert", porém, cobrindo cada linha do método:
0: public void testReordenar()
1: {
2: Object obj = new Object();
3: classeDao.expects(once()).method(
4: "reordenar").with(eq(obj),
5: eq(true));
6: classeManager.reordenar(obj, true);
7: }
Se você encontrar outra forma de fazer o teste e achar melhor, faça, mas não deixe de fazê-lo em hipótese alguma.