Cuál es el patrón idiomático de Hamcrest para afirmar que cada elemento de un iterable coincide con un emparejador dado?

Examine el siguiente fragmento:

    assertThat(
        Arrays.asList("1x", "2x", "3x", "4z"),
        not(hasItem(not(endsWith("x"))))
    );

Esto afirma que la lista no tiene un elemento que no termine con "x". Esta, por supuesto, es la forma negativa de decir que todos los elementos de la lista terminan con "x".

También tenga en cuenta que el fragmento arroja:

java.lang.AssertionError: 
Expected: not a collection containing not a string ending with "x"
     got: <[1x, 2x, 3x, 4z]>

Esto enumera la lista completa, en lugar de solo el elemento que no termina con "x".

Entonces, ¿hay una forma idiomática de:

Asegurando que cada elemento termina con "x" (sin negativos dobles) En caso de error de aserción, enumere solo aquellos elementos que no terminen con "x"

Respuestas a la pregunta(3)

Su respuesta a la pregunta