CollectionAssert en jUnit?

¿Hay una jUnit paralela a la de NUnit?CollectionAssert?

questionAnswers(4)

Usando JUnit 4.4 puedes usarassertThat() junto con laHamcrest código (no se preocupe, se envía con JUnit, no es necesario un extra.jar) para producir aserciones autodescriptivas complejas, incluidas las que operan en colecciones:

import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.*;
import static org.hamcrest.CoreMatchers.*;

List<String> l = Arrays.asList("foo", "bar");
assertThat(l, hasItems("foo", "bar"));
assertThat(l, not(hasItem((String) null)));
assertThat(l, not(hasItems("bar", "quux")));
// check if two objects are equal with assertThat()

// the following three lines of code check the same thing.
// the first one is the "traditional" approach,
// the second one is the succinct version and the third one the verbose one 
assertEquals(l, Arrays.asList("foo", "bar")));
assertThat(l, is(Arrays.asList("foo", "bar")));
assertThat(l, is(equalTo(Arrays.asList("foo", "bar"))));

Usando este enfoque, obtendrá automáticamente una buena descripción de la afirmación cuando falle.

La solución de Joachim Sauer es buena, pero no funciona si ya tiene una serie de expectativas que desea verificar y están en su resultado. Esto puede surgir cuando ya tiene una expectativa generada o constante en sus pruebas con las que desea comparar un resultado, o quizás tenga múltiples expectativas que espera que se fusionen en el resultado. Así que en lugar de usar emparejadores puedes usarList::containsAll yassertTrue Por ejemplo:

@Test
public void testMerge() {
    final List<String> expected1 = ImmutableList.of("a", "b", "c");
    final List<String> expected2 = ImmutableList.of("x", "y", "z");
    final List<String> result = someMethodToTest(); 

    assertThat(result, hasItems(expected1)); // COMPILE ERROR; DOES NOT WORK
    assertThat(result, hasItems(expected2)); // COMPILE ERROR; DOES NOT WORK

    assertTrue(result.containsAll(expected1));  // works~ but has less fancy
    assertTrue(result.containsAll(expected2));  // works~ but has less fancy
}

Echa un vistazo a FEST Fluent Assertions. En mi humilde opinión son más cómodos de usar que Hamcrest (e igualmente potentes, extensibles, etc.) y tienen mejor soporte de IDE gracias a su interfaz fluida. Verhttps://github.com/alexruiz/fest-assert-2.x/wiki/Using-fest-assertions

No directamente, no. Sugiero el uso deHamcrest, que proporciona un amplio conjunto de reglas de coincidencia que se integran muy bien con jUnit (y otros marcos de prueba)

yourAnswerToTheQuestion