2012-06-07 4 views

Antwort

37

Die Hamcrest-Matcher sind in mehrere Module aufgeteilt. Der "Kern" enthält die grundlegendsten Matcher und abstrakte Klassen, die für den Aufbau anderer Matcher benötigt werden. org.hamcrest.CoreMatchers enthält die Factory-Methoden für genau diese Matcher. Die anderen Matcher sind im "Bibliotheks" -Modul gruppiert nach den Arten von Objekten, die sie zuordnen, und sind optional. org.hamcrest.Matchers enthält beide Gruppen von Matchern.

Welche sollten Sie verwenden? Ich importiere statisch alles ohne Probleme aus letzterem. Vielleicht könnten die Kompilierzeiten etwas länger dauern, aber das war nie ein Problem für mich. Ich habe dies an der Spitze meiner Unit-Tests zusätzlich zu den JUnit Importen:

import static org.hamcrest.MatcherAssert.*; 
import static org.hamcrest.Matchers.*; 

Dies ergibt die beste Lesbarkeit in den Testverfahren.

9

Wenn Sie Mockito viel verwenden (wie ich), könnten Sie tun:

import org.mockito.Mockito; 

oder

static import org.mockito.Mockito.*; 

und da die Mockito Klasse Matchers Klasse Mockito des erstreckt, dann können Sie am Ende mit Konflikten zwischen den Matchers-Klassen oder ihren statischen Methoden. Mit CoreMatchers kann ich JUnit-abgeleitete CoreMatchers in der gleichen Klasse wie Mockito verwenden, ohne sie an ihrem Verwendungsort vollständig zu qualifizieren.