| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2007 19:43:27
|
Jair Rillo Junior
Moderador
![[Avatar]](/images/avatar/31b3b31a1c2f8a370206f111127c0dbd.jpg)
Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline
|
Olá pessoal,
Hoje me deparei com um problema que nunca tive antes.
Estou utilizando o JUnit 4 e Easymock para fazer os testes unitários, porém eu estou com dúvida de como fazer o teste de um método, quando o mesmo retorna uma java.util.List.
tentei utilizar o assertSame(Object <retorno do método>, Object <do meu easymock> , porém como esperado, os objetos sao diferentes, não o conteúdo, mas sim porque eles foram instanciados e tem valores de referencia diferentes, ou seja, o JUnit gera erro nessa linha.
Alguém sabe como eu posso fazer esse teste?
Obrigado pessoal
|
Jair Rillo Junior
http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2007 20:12:38
|
alberto_ribeiro
JavaEvangelist
![[Avatar]](/images/avatar/b36ed8a07e3cd80ee37138524690eca1.jpg)
Membro desde: 01/07/2005 11:15:19
Mensagens: 351
Localização: SP
Offline
|
Boa noite, olha para esse caso é complicado porque volta uma lista cheia de objetos, eu costumo fazer o seguinte: pegar o primeiro item que volta da lista e fazer o assert em cima dele, e também faço o assert para o tamanho da lista retornada, assertnotnull...
[]'s deve ter uma melhor solução mas...
|
Sun Certified Programmer for Java 1.5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2007 20:23:53
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Tenta Assert.assertTrue(lista1.containsAll(lista2));
[]s
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/06/2007 21:34:07
|
Jair Rillo Junior
Moderador
![[Avatar]](/images/avatar/31b3b31a1c2f8a370206f111127c0dbd.jpg)
Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline
|
seufagner wrote:Tenta Assert.assertTrue(lista1.containsAll(lista2));
[]s
Isso funcionou perfeito, alias, funcionou tão bem que eu verifiquei que existiam problemas no meu método
Obrigado também pela ajuda alberto, realmente sua idéia é muito boa
Abraços
|
Jair Rillo Junior
http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 06:11:03
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Nao sei quanto ao EasyMock, mas o JMock tem um mecanismo de constraints maravilhoso. Da pra fazer isso:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2008 12:32:44
|
TheRichard
Smalltalk
![[Avatar]](/images/avatar/f5dc091597ba69db84c6ece767fd4d2e.png)
Membro desde: 20/06/2008 12:27:41
Mensagens: 1
Offline
|
Só existe um problema! A 'lista1' pode conter todos os elementos da 'lista2' mais alguns outros e mesmo assim não ocorrerá erros!
Creio que seria melhor usar:
Assert.assertTrue(lista1.containsAll(lista2) && lista2.containsAll(lista1));
Pois assim você garantiria que as duas lista contêm a mesma quantidade de elementos.
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2008 13:46:13
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
TheRichard wrote:Só existe um problema! A 'lista1' pode conter todos os elementos da 'lista2' mais alguns outros e mesmo assim não ocorrerá erros!
Creio que seria melhor usar:
Assert.assertTrue(lista1.containsAll(lista2) && lista2.containsAll(lista1));
Pois assim você garantiria que as duas lista contêm a mesma quantidade de elementos.
[]'s
Assert.assertTrue(lista1.size() == lista2.size() && lista1.containsAll(lista2));
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/02/2011 14:50:50
|
rafaelsantini
JavaBaby
![[Avatar]](/images/avatar/3eb65004054f5d21fca4087f5658c727.jpg)
Membro desde: 28/03/2006 19:44:28
Mensagens: 86
Localização: Capivari de Baixo - SC
Offline
|
Assert.assertTrue(lista1.size() == lista2.size() && lista1.containsAll(lista2));
Uma das características de uma lista é a ordem dos elementos. Essa técnica assegura que as duas listas têm os mesmos elementos, mas não assegura que estão na mesma ordem.
|
|
|
 |
|
|