quarta-feira, 5 de dezembro de 2007

TDD - Um exemplo prático

No início, via sempre o exemplo de validação de cpf, as vezes me pegava pensando, será que pra casos "não matemáticos" isso vai funcionar?

Hoje, no trabalho, desenvolvendo um método bem simples, resolvi tirar os "print screen" pra postar aqui e mostrar pros iniciantes em TDD que o assunto em bem próximo da nossa realidade.

Segue o exemplo abaixo:

Dada uma Collection de AtoNormativo* e um objeto do tipo AtoNormativo, façamos um método que retorne a Collection de AtoNormativo excluindo o objeto passado.
*AtoNormativo é uma classe e tem uma propriedade Long id.

1) Crio o método retiraNorma passando uma Collection e um AtoNormativo;




2) Crio o método testRetiraNorma, crio a Collection, adiciono 3 objetos do tipo AtoNormativo e chamo o método retiraNorma, passando um dos objetos inseridos, para ser retirado da Collection.



Perceba que após chamar o método, testo se a Collection foi retornada com 2 elementos somente, se um objeto que não deve ter sido removido, não foi removido, e se um objeto que deve ter sido removido, foi removido.


3) Rodei o teste e deu erro. É o que deve acontecer, já que o método ainda retorna Null.
Implemento o método.




4) Rodo o teste e tudo ok.



A barra verde no canto esquerdo superior da imagem é o sinal de sucesso.

Pronto.


Perceba que a sequência lógica se mantém, penso no que vou fazer, penso no que o método deve fazer, implemento e testo, porém, quando o teste é rodado, você não precisa mais rodar a aplicação, abrir uma determinada tela e executar um certa funcionalidade, o teste garante que, na situação que você pensou, o método irá funcionar.

Perceba que o teste pode ser alterado, podem ser inseridos situações em que o objeto passado não está dentre os objetos da Collection, e isso pode ser feito, o teste não é final, ele sempre pode evoluir.