JUnit - Como testar quando o retorno do método é um java.util.List ?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Jair Rillo Junior
Moderador
[Avatar]

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
alberto_ribeiro
JavaEvangelist
[Avatar]

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
[Email] [MSN]
seufagner
JavaEvangelist
[Avatar]

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
[Email] [WWW]
Jair Rillo Junior
Moderador
[Avatar]

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

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:

[Email] [WWW] [Yahoo!] [MSN] [ICQ]
TheRichard
Smalltalk
[Avatar]

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
Bruno Laturner
GUJ Expert
[Avatar]

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
[WWW]
rafaelsantini
JavaBaby
[Avatar]

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.
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team