Le framework JUnit contient 2 Assert
classes (dans différents packages, évidemment) et les méthodes de chacune semblent très similaires. Quelqu'un peut-il expliquer pourquoi c'est?
Les cours auxquels je fais référence sont: junit.framework.Assert
et org.junit.Assert
.
junit.framework.*
de la liste déroulante d'importation statique dansEditor->General->Auto Import->Exclude from Import and Completion
.Réponses:
L'ancienne méthode (de JUnit 3) consistait à marquer les classes de test en les étendant
junit.framework.TestCase
. Cela s'est hérité dejunit.framework.Assert
lui-même et votre classe de test a gagné la capacité d'appeler les méthodes d'assertion de cette façon.Depuis la version 4 de JUnit, le framework utilise
Annotations
pour marquer les tests. Vous n'avez donc plus besoin d'étendreTestCase
. Mais cela signifie que les méthodes d'assertion ne sont pas disponibles. Mais vous pouvez effectuer une importation statique de la nouvelleAssert
classe. 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:Après cette importation statique, vous pouvez utiliser ces méthodes sans préfixe.
Lors de la refonte, ils ont également migré vers le nouveau package
org.junit
qui suit mieux les conventions normales de dénomination des packages.la source
JUnit 3.X:
junit.framework.Assert
JUnit 4.X:
org.junit.Assert
Préférez le plus récent, en particulier lorsque vous exécutez JDK5 et versions ultérieures avec prise en charge des annotations.
la source
Il y a en fait un changement fonctionnel:
org.junit.Assert
se plaindra si vous utilisez les deux argumentsassertEquals()
avecfloat
oudouble
, toutjunit.framework.Assert
en le mettant automatiquement en boîte automatique.la source
Je crois qu'ils refactorisent de
junit.framework
àorg.junit
etjunit.framework.Assert
sont maintenus pour une compatibilité descendante.la source
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
org.junit.Assert
et quelques refactorisations sont effectuées. Le seul changement est la comparaison avecArrays
. Il y a quelques nettoyages de code, mais il n'y a (à mon humble avis) aucun changement fonctionnel .la source
Dans Android Studio (et donc également dans IntelliJ), vous pouvez exclure globalement
junit.framework
de la proposition d'importation automatique.Vous pouvez définir la portée entre
IDE
ouProject
. Si vous n'avez pas de projets qui utilisent JUnit 3, vous pouvez rester en toute sécurité avec la portée IDE.Position de réglage:
la source