Eu queria saber se alguém sabia uma maneira de verificar se uma lista está vazia usando assertThat()
e Matchers
?
A melhor maneira que pude ver, basta usar o JUnit:
assertFalse(list.isEmpty());
Mas eu esperava que houvesse alguma maneira de fazer isso em Hamcrest.
java
collections
junit
hamcrest
Ian Dallas
fonte
fonte
Respostas:
Bem, há sempre
... mas acho que não foi exatamente isso que você quis dizer :)
Alternativamente:
empty()
é uma estática naMatchers
classe. Note-se a necessidade de lançar olist
queCollection
, graças a Hamcrest 1,2 de genéricos vacilante.As seguintes importações podem ser usadas com o hamcrest 1.3
fonte
assertThat((Collection)list, is(not(empty())));
expected true but got false
obter algo comoexpected empty but got [1, 2, 3]
assertThat(list, Matchers.<String>empty())
(lista assumindo é uma coleção deString
s)Isso é corrigido no Hamcrest 1.3. O código abaixo compila e não gera nenhum aviso:
Mas se você tiver que usar uma versão mais antiga - em vez de com bug,
empty()
poderá usar:hasSize(greaterThan(0))
(
import static org.hamcrest.number.OrderingComparison.greaterThan;
ouimport static org.hamcrest.Matchers.greaterThan;
)Exemplo:
O mais importante das soluções acima é que elas não geram avisos. A segunda solução é ainda mais útil se você deseja estimar o tamanho mínimo do resultado.
fonte
assertThat(list, not(hasSize(0)))
será bem sucedido selist
fornull
, em oposição aassertThat(list, hasSize(greaterThan(0)))
Se você estiver atrás de mensagens de falha legíveis, poderá ficar sem interrupção usando o assertEquals usual com uma lista vazia:
Por exemplo, se você executar
você recebe
fonte
Crie seu próprio IsEmpty TypeSafeMatcher personalizado:
Mesmo que os problemas genéricos sejam corrigidos de maneira
1.3
ótima sobre esse método, ele funciona em qualquer classe que possua umisEmpty()
método! Não é sóCollections
!Por exemplo, ele funcionará
String
também!fonte
Isso funciona:
fonte