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 laMatchers
clase. Tenga en cuenta la necesidad de lanzar ellist
toCollection
, 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 false
obtener algo comoexpected empty but got [1, 2, 3]
assertThat(list, Matchers.<String>empty())
(suponiendo que la lista sea una colección deString
s)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 silist
esnull
, 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.3
lo mejor de este método es que funciona en cualquier clase que tenga unisEmpty()
método. No sóloCollections
!Por ejemplo, ¡funcionará
String
también!fuente
Esto funciona:
fuente