Je souhaite utiliser le assertArrayEquals(ArrayList<Token>, ArrayList<Token>)
avec ces arguments (c'est-à-dire arrayList of tokens). Mais Java me dit que j'ai besoin de créer une telle méthode. Existe-t-il un moyen de tester l'égalité de deux arrayLists de n'importe quel type dans Junit?ArrayList égalité JUnit testing
Répondre
Je veux utiliser le
assertArrayEquals(ArrayList<Token>, ArrayList<Token>)
avec ces arguments (à savoir arrayList de jetons). Mais Java me dit que j'ai besoin de créer une telle méthode.
Il vous indique que vous devez créer la méthode car il n'existe aucune méthode de ce type dans la bibliothèque JUnit. Il n'y a pas une telle méthode dans la bibliothèque JUnit parce que assertArrayEquals
est pour comparer tableaux, et et ArrayList
est pas un tableau-c'est List
.
Existe-t-il un moyen de tester l'égalité de deux arrayLists de n'importe quel type dans Junit?
Vous pouvez vérifier l'égalité de deux ArrayLists
(vraiment, tout deux List
objets) en utilisant equals
, vous devriez être en mesure d'utiliser la méthode assertEquals
de JUnit et il fonctionne très bien.
Si vous utilisez un framework Junit standard comme unitils etc, ils ont des méthodes comme assertReflectionEquals (similaire à d'autres cadres) où vous pouvez utiliser deux objets en utilisant la réflexion. Si vous n'utilisez un framework JUnit tiers, vous pouvez écrire votre propre méthode générique similaire
Les gars Downvote est génial mais vraiment son énervant quand quelqu'un downvote sans donner aucun retour son irritant .Il ne donne pas chance à poster pour améliorer la prochaine fois –
essayer
Assert.assertEquals(Object expected, Object actual);
il fonctionne très bien avec les collections
Ce que vous voulez probablement utiliser est void org.junit.Assert.assertArrayEquals(Object[] expecteds, Object[] actuals)
. Vous avez juste besoin de convertir Liste de tableau avec méthode toArray()
, comme ça:
ArrayList<Token> list1 = buildListOne(); // retrieve or build list
ArrayList<Token> list2 = buildListTwo(); // retrieve or build other list with same items
assertArrayEquals(list1.toArray(), list2.toArray());
Ne pas oublier d'importer cette assertion.
import static org.junit.Assert.assertArrayEquals;
Mais cette méthode ne fonctionne que si les éléments des deux listes ont le même ordre. Si la commande n'est pas garantie, vous devez trier les listes avec la méthode Collections.sort()
, mais votre objet doit implémenter l'interface java.util.Comparable
avec une méthode int compareTo(T o)
.
PS: L'autre solution possible est d'utiliser assertEquals et envelopper votre liste dans Set, comme ça:
assertEquals(new HashSet<Token>(list1), new HashSet<Token>(list2));
Imaginer myArraylist
est une liste de tableau avec le contenu "one", "two", "three"
Cela fonctionne bien:
List<String> categories = asList("one", "two", "three");
assertTrue(myArraylist.equals(categories));
Ne pas oublier d'importer: import static java.util.Arrays.asList;
- 1. RxJava2 JUnit testing
- 2. FragmentActivity Junit Testing
- 3. JUnit Application Suite Testing
- 4. junit testing with mockobjects
- 5. Java - Junit Testing OOP Classes
- 6. jUnit testing avec Google Web Toolkit
- 7. JUnit testing se bloque à clientSocket.accept()?
- 8. JUnit testing de java Méthode égale
- 9. jUnit testing Opérations de base de données
- 10. JUnit testing: Différence entre never() et times (0)
- 11. FEST JUnit-Swing testing noobQ: comment tester une classe principale?
- 12. JUnit testing sur l'application Android avec le framework Robolectrics
- 13. Software Testing
- 14. JPA Testing framework
- 15. assertArrayEquals testing
- 16. Java Unit Testing
- 17. Égalité d'itérateur
- 18. Struts testing JUnit4
- 19. Égalité pour .NET PropertyInfos
- 20. PHP DateTime égalité
- 21. ActiveRecord égalité objet
- 22. égalité polymorphique en C++
- 23. égalité terrain dans Sql
- 24. SPARQL xsd: égalité dateTime
- 25. Python flottant égalité étrangeté
- 26. opérateur égalité problème prioritaire
- 27. égalité objets comparant
- 28. délégué d'événement (in) égalité?
- 29. textbox nécessaire égalité fausse
- 30. Égalité POSIXct fonctionnant bizarrement
Le 'assertEquals' normal devrait fonctionner très bien pour' ArrayList '. –
@Bohemian: Je ne le crois pas. 'Liste.equals' vérifie l'égalité élément par élément, et 'assertEquals' utilise la méthode' equals'. –
@LouisWasserman woops! vous avez raison :) – Bohemian