Em desenv. guiado por teste deve-se testar o equals?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

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
[Email]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

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

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

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
[Email]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

"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?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

cv wrote: Voce nunca vai ter que chamar esse metodo mesmo, pq nao dar um nome extremamente explicativo pra ele?


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

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


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


Abraços!
Thiago
[Email]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

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

Tava pensando em comprar o JUnit in Action.

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

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

<editado para incluir os nomes dos livros por Luca>

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

This message was edited 2 times. Last update was at 20/06/2005 15:29:24

[Email]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Rafael Nunes wrote:Tava pensando em comprar o JUnit in Action.


Acho este livro muito bom!

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

Luca wrote:Olá

Acho este livro muito bom!

[]s
Luca


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

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

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!
[Email]
Daniel Quirino Oliveira
Moderador
[Avatar]

Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline

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


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.

Daniel Quirino Oliveira
[Email] [WWW]
caiofilipini
GUJ Master
[Avatar]

Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline

Daniel Quirino Oliveira wrote:...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

Caio N. Filipini
"There is no spoon."
[Email] [WWW]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

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
[Email]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team