Me preguntaba si alguien sabía de una manera de verificar si una Lista está vacía usando assertThat()y Matchers?
La mejor manera que pude ver es usar JUnit:
assertFalse(list.isEmpty());Pero esperaba que hubiera alguna forma de hacer esto en Hamcrest.
                    
                        java
                                collections
                                junit
                                hamcrest
                                
                    
                    
                        Ian Dallas
fuente
                
                fuente

Respuestas:
Bueno siempre hay
... pero supongo que eso no es lo que querías decir :)
Alternativamente:
empty()Es una estática en laMatchersclase. Tenga en cuenta la necesidad de lanzar ellisttoCollection, gracias a los genéricos inestables de Hamcrest 1.2.Las siguientes importaciones se pueden utilizar con Hamcrest 1.3
fuente
assertThat((Collection)list, is(not(empty())));expected true but got falseobtener algo comoexpected empty but got [1, 2, 3]assertThat(list, Matchers.<String>empty())(suponiendo que la lista sea una colección deStrings)Esto se soluciona en Hamcrest 1.3. El siguiente código compila y no genera ninguna advertencia:
Pero si tiene que usar una versión anterior, en lugar de tener errores
empty(), puede usar:hasSize(greaterThan(0))(
import static org.hamcrest.number.OrderingComparison.greaterThan;oimport static org.hamcrest.Matchers.greaterThan;)Ejemplo:
Lo más importante sobre las soluciones anteriores es que no genera ninguna advertencia. La segunda solución es aún más útil si desea estimar el tamaño mínimo del resultado.
fuente
assertThat(list, not(hasSize(0)))será exitoso silistesnull, a diferencia deassertThat(list, hasSize(greaterThan(0)))Si buscas mensajes de error legibles, puedes prescindir de los inconvenientes utilizando los aserciones iguales habituales con una lista vacía:
Por ejemplo, si corres
usted obtiene
fuente
Cree su propio IsEmpty TypeSafeMatcher personalizado:
Incluso si los problemas genéricos se solucionan,
1.3lo mejor de este método es que funciona en cualquier clase que tenga unisEmpty()método. No sóloCollections!Por ejemplo, ¡funcionará
Stringtambién!fuente
Esto funciona:
fuente