2009-11-18 10 views
5

Quando eseguo i miei test Junit4 ora utilizzo l'annotazione @RunWith(SpringJUnit4ClassRunner.class) che mi consente di iniettare Spring Beans nella mia classe di test.Utilizzo di Spring JUnit4 e JMock insieme

Vorrei utilizzare il framework JMock 2 (di cui non ho esperienza reale) ma gli esempi che vedo richiedono il seguente @RunWith(JMock.class).

Quindi la mia domanda è possibile utilizzare JMock e Spring insieme ai miei test JUnit4 e, in caso affermativo, come? Ad esempio c'è un corridore di prova Spring che supporta anche JMock?

Grazie,

Richard

risposta

6

È possibile chiamare in modo esplicito context.assertIsSatisfied() alla fine del test, in un metodo @After per esempio.

Nel sito jmock.org, selezionare la scheda "Altro" su qualsiasi esempio di codice e la documentazione mostrerà come utilizzare jMock senza integrazione con JUnit framework.

La prossima versione di jMock supporterà il nuovo meccanismo di "regole" in JUnit 4.7 e quindi non sarà necessario utilizzare un programma di test personalizzato.

+0

Questo ha senso - grazie per la risposta. –

+1

L'ultima versione di JMock ha un'opzione @Rule, JUnitRuleMockery, che evita la necessità di un corridore –

1

Se il problema è relativo a @RunWith, è possibile utilizzare lo JMockit Expectations API. È simile a jMock in quanto le aspettative sono registrate anche all'interno di un blocco new Expectations() {...}, ma non richiede l'uso di @RunWith (né una classe di test di base). Inoltre, non è presente il richiamo del metodo context.checking(...) per il blocco di attesa.

1

Penso che potrebbe anche mancare un punto qui. Per il test dell'unità, voglio un controllo esatto su come viene costruito l'oggetto in prova, il che significa passare in istanze note come collaboratori. In altre parole, se ho bisogno di un oggetto, lo creo nel test e lo inoltro. Invocare Spring sembra eccessivo.

D'altra parte, avrei bisogno di fagioli Spring se stavo facendo una specie di test integrazione, per vedere come l'intera cosa cablata insieme o testare un componente di terze parti.

Problemi correlati