différences entre 2 classes JUnit Assert

Le framework JUnit contient 2 classes Assert (dans des packages différents, évidemment) et les méthodes sur chacun semblent très similaires. Quelqu’un peut-il expliquer pourquoi c’est?

Les classes junit.framework.Assert je fais référence sont: junit.framework.Assert et org.junit.Assert .

L’ancienne méthode (de JUnit 3) consistait à marquer les classes de test en étendant junit.framework.TestCase . Cela a hérité de junit.framework.Assert lui-même et de votre classe de test la possibilité d’appeler les méthodes d’ junit.framework.Assert cette façon.

Depuis la version 4 de JUnit, le framework utilise les Annotations pour marquer les tests. Vous n’avez donc plus besoin d’étendre TestCase . Mais cela signifie que les méthodes d’affirmation ne sont pas disponibles. Mais vous pouvez effectuer une importation statique de la nouvelle classe Assert . C’est pourquoi toutes les méthodes d’assertion de la nouvelle classe sont des méthodes statiques. Vous pouvez donc l’importer de cette façon:

 import static org.junit.Assert.*; 

Après cette importation statique, vous pouvez utiliser cette méthode sans préfixe.

Lors de la refonte, ils ont également déplacé vers le nouveau package org.junit qui suit mieux les conventions normales pour le nommage des packages.

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

Préférez le plus récent, en particulier lors de l’exécution de JDK5 et supérieur avec prise en charge des annotations.

Il y a en fait un changement fonctionnel: org.junit.Assert va se plaindre si vous utilisez assertEquals() à deux arguments avec float ou double , alors que junit.framework.Assert le remplacera silencieusement.

Je crois qu’ils sont en junit.framework se refacturer de junit.framework à org.junit et junit.framework.Assert est maintenu pour une compatibilité ascendante.

J’ai fait une comparaison approximative du code source et il n’y a pas de changements sérieux. De nombreux commentaires ont été ajoutés dans org.junit.Assert et certains refactorings sont effectués. Le seul changement est la comparaison avec les Arrays . Il y a des nettoyages de code, mais il n’y a pas de changement fonctionnel .