JUnit - Como testar quando o retorno do método é um java.util.List?

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

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…

[quote=seufagner]Tenta Assert.assertTrue(lista1.containsAll(lista2));

[]s[/quote]

Isso funcionou perfeito, alias, funcionou tão bem que eu verifiquei que existiam problemas no meu método :wink:

Obrigado também pela ajuda alberto, realmente sua idéia é muito boa

Abraços

Nao sei quanto ao EasyMock, mas o JMock tem um mecanismo de constraints maravilhoso. Da pra fazer isso:

assertThat(expected, collectionContaining(foo, bar, baz));

Só existe um problema! A ‘lista1’ pode conter todos os elementos da ‘lista2’ mais alguns outros e mesmo assim não ocorrerá erros! :shock:

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. :stuck_out_tongue:

[]'s

[quote=TheRichard]Só existe um problema! A ‘lista1’ pode conter todos os elementos da ‘lista2’ mais alguns outros e mesmo assim não ocorrerá erros! :shock:

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. :stuck_out_tongue:

[]'s[/quote]
:shock:
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.

Tenta Assert.assertTrue(lista1.containsAll(lista2));

[]s