Comment affirmer une liste dans un cas de test JUnit ? Je veux dire non seulement la taille de la liste mais aussi le contenu de la liste.
Réponses
Trop de publicités?Je réalise que cela a été demandé il y a quelques années, probablement cette fonctionnalité n'était pas autour de l'époque. Mais maintenant, il est facile de simplement faire ceci:
@Test
public void test_array_pass()
{
List<String> actual = Arrays.asList("fee", "fi", "foe");
List<String> expected = Arrays.asList("fee", "fi", "foe");
System.out.println(actual == expected); // false
assertThat(actual, is(expected)); // passes
}
Si vous avez une version récente de Junit installé avec hamcrest, il suffit d'ajouter ces importations:
import static org.junit.Assert.*;
import static org.hamcrest.core.Is.is;
http://junit-team.github.io/junit/javadoc/latest/org/hamcrest/core/Is.html
Ne pas transformer en chaîne et comparer. Ce n'est pas bon et la performance. Dans le Junit, à l’intérieur de Corematchers, il y a un correctif pour cela => hasItems
List<Integer> yourList = Arrays.asList(1,2,3,4)
assertThat(youList, CoreMatchers.hasItems(1,2,3,4,5));
C’est le meilleur moyen que je connaisse pour vérifier les éléments d’une liste.
C'est un héritage de réponse, adapté pour JUnit 4.3 et au-dessous. La version moderne de JUnit comporte lisible messages d'échec dans la assertThat méthode. Préférez d'autres réponses sur cette question si possible.
List<E> a = resultFromTest();
List<E> expected = Arrays.asList(new E(), new E(), ...);
assertTrue("Expected 'a' and 'expected' to be equal."+
"\n 'a' = "+a+
"\n 'expected' = "+expected,
expected.equals(a));
Pour l'enregistrement, comme @Paul a mentionné dans son commentaire à cette réponse, les deux List
s sont égaux:
si et seulement si l'objet spécifié est aussi une liste, les deux listes ont la même taille, et toutes les paires correspondantes des éléments dans les deux listes sont égales. (Deux éléments
e1
ete2
sont égaux s'(e1==null ? e2==null : e1.equals(e2))
.) En d'autres termes, deux listes sont définies de façon à être égaux s'ils contiennent les mêmes éléments dans le même ordre. Cette définition s'assure que la méthode equals fonctionne correctement à travers les différentes implémentations de l'List
interface.
Voir la Javadoc de l' List
interface.
Si vous ne vous souciez pas de l'ordre des éléments, je vous recommande ListAssert.assertEquals
dans junit-addons.
Lien: http://junit-addons.sourceforge.net/
Pour les utilisateurs paresseux de Maven:
<dependency>
<groupId>junit-addons</groupId>
<artifactId>junit-addons</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>