Il semble que la classe hamcrest org.hamcrest.Matchers
est très similaire à org.hamcrest.CoreMatchers
(bien qu'il ressemble à Matchers
a plus). Pourquoi devrais-je choisir d'utiliser CoreMatchers
(à part cela, la classe est légèrement plus petite), et pourquoi ces deux classes sont-elles si similaires?
Réponses
Trop de publicités?Le Hamcrest les allumettes sont divisés en plusieurs modules. La "base" comprend la plus grande base de rapprochement et de classes abstraites nécessaires à la construction d'autres de rapprochement. org.hamcrest.CoreMatchers
comprend l'usine de méthodes pour ce rapprochement. Les autres les allumettes sont dans la "bibliothèque" module regroupés selon les types d'objets qu'ils correspondent et sont facultatifs. org.hamcrest.Matchers
comprend deux ensembles de rapprochement.
Qui devriez-vous utiliser? Je statiquement importer tout le contenu de ce dernier sans aucun problème. Peut-être le temps de compilation peut prendre un peu plus longtemps, mais qui n'a jamais été un problème pour moi. J'ai mis en haut de mes tests d'unité en plus de la JUnit importations:
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
Ce qui donne la meilleure lisibilité dans les méthodes de test.
Si vous utilisez beaucoup Mockito (comme moi), vous faites peut-être:
import org.mockito.Mockito;
ou
static import org.mockito.Mockito.*;
et depuis le Mockito
classe s'étend de Mockito Matchers
classe, alors vous pouvez finir avec les conflits entre soit les classes Matchers ou leurs méthodes statiques. Avoir CoreMatchers me permet d'utiliser des CoreMatchers dérivés de JUnit dans la même classe que Mockito, sans avoir à les qualifier complètement à leur point d'utilisation.