Sto provando a convertire alcuni dei miei test di unità dall'uso di JMock all'utilizzo di Mockito e ho riscontrato alcuni ostacoli.Mockito vs JMock
Innanzitutto nel mio test utilizzando JMock la verifica e ritorno dello stub avvenire in un solo passo come segue
contextMockery.checking(new Expectations() {{
oneOf(dateUtilityService).isBeforeToday(URGENT_DATE);
will(returnValue(true));
}});
Ciò verifica essenzialmente che il metodo viene chiamato e restituisce un valore fisso allo stesso tempo. Il test fallisce se il metodo isBeforeToday NON viene chiamato e restituisce il mio valore predefinito di true allo stesso tempo. Mentre quando si utilizza Mockito devo verificare che il metodo viene chiamato e poi tornare il mio valore in scatola in fasi distinte, che sono più o meno un duplicato come segue:
doReturn(true).when(dateUtilityService).isBeforeToday(URGENT_DATE);
verify(dateUtilityService).isBeforeToday(URGENT_DATE);
Non c'è un modo per fare questo in un solo passo?
In secondo luogo, se dimentico di elencare una chiamata di metodo a uno dei miei mock nelle mie aspettative, JMock non supera il test con "eccezione di invocazione imprevista" che a mio avviso è corretta mentre Mockito passerà felicemente il test a meno che non verifichi esplicitamente che una chiamata al metodo non deve mai accadere, è corretto (sembra sbagliato)? C'è un modo per dire a mockito di fallire il test se vengono fatte chiamate di metodo inaspettate alle mie dipendenze derise?
Solo per curiosità, ha fatto prendere in considerazione anche la conversione dei test per JMockit? La sintassi è molto più vicina a jMock: 'new Expectations() {{dateUtilityService.isBeforeToday (URGENT_DATE); risultato = vero; }}; '. –