2012-06-07 11 views

risposta

37

Gli accoppiamenti di Hamcrest sono suddivisi in diversi moduli. Il "nucleo" include gli abbinamenti di base e le classi astratte necessarie per costruire altri giocatori. org.hamcrest.CoreMatchers include i metodi di fabbrica solo per questi abbinamenti. Gli altri matcher si trovano nel modulo "library" raggruppato in base ai tipi di oggetti che corrispondono e sono opzionali. org.hamcrest.Matchers include entrambi i set di risultati.

Quale dovresti usare? Importa staticamente tutto da quest'ultimo senza alcun problema. Forse i tempi di compilazione potrebbero richiedere un po 'più di tempo, ma non è mai stato un problema per me. Ho messo questo nella parte superiore del mio test di unità, oltre alle importazioni JUnit:

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

Questo dà la migliore leggibilità nei metodi di prova.

9

Se si utilizza Mockito un sacco (come faccio io), si potrebbe fare:

import org.mockito.Mockito; 

o

static import org.mockito.Mockito.*; 

e dal momento che la classe Mockito estende la classe di Mockito Matchers, allora si può finire con conflitti tra le classi Matchers o i loro metodi statici. Avere CoreMatchers mi consente di utilizzare CoreMatcher derivati ​​da JUnit nella stessa classe di Mockito, senza doverli qualificare pienamente al loro punto di utilizzo.