Je travaille avec une application Web Java qui a beaucoup de tests unitaires. Nous exécutons les tests unitaires dans Eclipse. Je passe par les tests et refactoring certains d'entre eux. Je l'ai vu quelques tests qui sont écrits comme ça (je vais la faire bouillir les affirmations, mes exemples littérales sont en fait des variables dans les tests)Comportement JUnit inattendu
assertEquals(new Integer(7), new Long(7));
Ce test passe !, et je ne comprends pas pourquoi, puisque les types sont différents. Après avoir vu ce comportement, j'ai créé un simple projet Java dans Eclipse et écrit essentiellement le même test unité
assertEquals(new Integer(7), new Long(7);
et Failed comme je m'y attendais. Je n'ai pas besoin d'aide, j'étais juste curieux de savoir comment le test passe dans un environnement et échoue (comme il se doit) dans un autre.
Il sera beaucoup plus facile de vous aider si vous incluez du code réel. –
Etes-vous sûr qu'ils sont à la fois 'java.lang.Integer's? Sinon, peut-être une classe personnalisée pourrait remplacer la méthode d'égal à égal .... un coup de feu, sans doute, mais c'est une explication possible. –
Nous serions en train de saisir les pailles ici, à moins que vous ne puissiez fournir les noms complets de 'Integer' et' Long'. Je suis d'accord avec @EdwinBuck en ce que c'est probablement quelque chose de surcharger l'une de ces classes, mais je ne suis pas sûr de quoi, et je ne suis pas sûr pourquoi. – Makoto