Em desenv. guiado por teste deve-se testar o equals?

Olá GUJ’s!

A minha dúvida é bastante simples. Estou brincado com TDD (Test Driven Development ) em um projetinho, e nessa brincadeira bateu a seguinte dúvida:

Eu também devo criar testes para o método equals?

Testar o método equals é uma rotina bastante chata e repetitiva. Qual estratégia vcs utilizam para lidar com esta situação?

Desde já agradeço!
Thiago

Se seu objeto sobrescreve equals , ele deve ser usado em algum lugar no seu sistema, então sim, deve ser testado.

Valeu shoes…

Estou usando o commons-lang para implementar equals, hashcode e toString… quebra um bom galho!

Testar o equals é chato pacas, mas em testes de outras funcionalidades do sistema, sabendo que o equals foi devidamente testado acaba valendo a pena!

Eu crei um testSaveAndLoad…

Daí eu salvava o objeto, buscava ele de volta, mas daí pra saber se tinha retornado objeto correto ttinha que ficar testando atributo por atributo… daí não dá né!!!

Obrigado!
Thiago

“testSaveAndLoad” eh um nome ruim - tente algo do tipo “test Projects Can Be Saved And Loaded Without Losing Any Attribute Data”, ou testProjectsCanBeSavedAndLoadedWithoutLosingAnyAttributeData(), pros intimos. Voce nunca vai ter que chamar esse metodo mesmo, pq nao dar um nome extremamente explicativo pra ele? :wink:

Boa Carlos! Essa sua colocação me convenceu!! :smiley: :smiley:

Vou começar a revisar todos os testes e colocar um nome mais exlicativo para todos eles…

De boa, TDD é muito louco!!! :smiley: … Estou fazendo um esforço para adiquirir esta prática, e como está no livros, o resultado é realmente surpreendente!!! :wink:

Abraços!
Thiago

Qual livro você está lendo/utilizando sobre TDD?

Tava pensando em comprar o JUnit in Action.

Olá Rafael!

Bom… primeiro eu comecei a me interar sobre Extreme Programming! É interessante vc ter idéia de como funciona uma metodologia de desenvolvimento ágil. Existem vários livro sobre este assunto, mas eu li o Extreme Programming do Vinicius Manhães Teles:

http://www.temporeal.com.br/produtos.php?id=168198

Atualmente estou lendo o livro Java Open Source Programming: with XDoclet, JUnit, WebWork, Hibernate:
http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471463620.html

Este livro aborda a criação de uma aplicação PetStore usando apenas tecnologias open source. Mas o que é interessante no livro não são apenas as tecnologias abordadas, mas sim o fato do desenvolvimento deste projeto ser guiado por testes. Ou seja, seja qual for o código exemplo do livro, eles primeiro criam os testes, e depois codificam! Muito bom em minha opinião… O Refactoring aqui também come solto!

Agora, vou passar pra vc os livros que estão na minha lista de não lidos, que que vou ler em breve, se Deus quiser!!!

Addison Wesley - Test-Driven Development By Example
Pragmatic Unit Testing
Addison Wesley - Refactoring Improving the desing of existing code

Bom… são esses!
Abraços!
Thiago

Olá

Acho este livro muito bom!

[]s
Luca

[quote=Luca]Olá

Acho este livro muito bom!

[]s
Luca[/quote]

Na verdade foi exatamente pela sua sugestão no tópico de livros que decidi comprá-lo para aprender um pouco mais sobre testes… :wink:

Bom… alguns materias q encontrei na net…

http://www.argonavis.com.br/palestras/xpbrasil2002/JUnit_XP.pdf
http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=82&page=1

Abraços!

Só complementando o shoes, use as 5 regrinhas (reflexão, simetria, transitividade, consistência e xyz != null, qdo xyz for não nulo) que toda implementação de um método equals deve obedecer como parâmetros para teste.

Outra sugestão nesse sentido é usar o JUnit-addons para fazer testes de equals() e hashCode():

http://junit-addons.sourceforge.net/junitx/extensions/EqualsHashCodeTestCase.html
http://junit-addons.sourceforge.net/
http://sourceforge.net/projects/junit-addons

[]'s

Essa foi boa em Caio!

Eu num conhecia esse add-ons!

Nossa, só de pensar em ficar criando os testes de equals me dava uma tristeza. Vou em breve testar isso ai em um projetinho!

Abraços!
Thiago