Junit: afirman que una lista contiene al menos una propiedad que coincide con alguna condición

ewok:

Tengo un método que devolverá una lista de objetos de tipo MyClass. MyClasstiene muchas propiedades, pero que me importa typey count. Quiero escribir una prueba que afirma que la lista devuelta contiene al menos un elemento que cumpla una determinada condición. Por ejemplo, quiero al menos un elemento en la lista de tipo "Foo"y el recuento 1.

Estoy tratando de encontrar la manera de hacer esto sin bucle literalmente en la lista devuelta y la comprobación de cada elemento individual, rompiendo si encuentro uno que pasa, como:

    boolean passes = false;
    for (MyClass obj:objects){
        if (obj.getName() == "Foo" && obj.getCount() == 1){
            passes = true;
        }
    }
    assertTrue(passes);

Realmente no me gusta esta estructura. Me pregunto si hay una mejor manera de hacerlo utilizando assertThaty algunos Matcher.

user2718281:

con las importaciones hamcrest

import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

puede probar con

    assertThat(foos, hasItem(allOf(
        hasProperty("name", is("foo")),
        hasProperty("count", is(1))
    )));

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=205052&siteId=1
Recomendado
Clasificación