我正在嘗試將部分使用JMock的單元測試轉換爲使用Mockito,並且遇到了一些絆腳石。Mockito vs JMock
在我的測試使用JMock的當驗證和短截線的返回發生在一個步驟如下contextMockery.checking(new Expectations() {{
oneOf(dateUtilityService).isBeforeToday(URGENT_DATE);
will(returnValue(true));
}});
這基本上驗證方法被調用並返回同時罐裝值
首先。如果isBeforeToday方法未被調用,則測試將失敗,並同時返回我的罐頭值爲true。使用的Mockito時,我卻以驗證該方法被調用,然後在單獨的步驟,這是相當多的重複如下回到我的罐頭值:
doReturn(true).when(dateUtilityService).isBeforeToday(URGENT_DATE);
verify(dateUtilityService).isBeforeToday(URGENT_DATE);
難道就沒有辦法一步到位做到這一點?其次,如果我忘記在我的期望中列出一個方法調用我的一個嘲笑,JMock通過「意外的調用異常」失敗了,這在我看來是正確的,而Mockito會很樂意通過測試,除非我明確驗證一個方法調用模擬一定不會發生,這是正確的(似乎是錯誤的)?有沒有辦法告訴mockito如果對我的模擬出的依賴關係進行了意外的方法調用,從而無法通過測試?
只是出於好奇,你也可以考慮轉換測試JMockit?語法更接近jMock's:'new Expectations(){{dateUtilityService.isBeforeToday(URGENT_DATE);結果= true; }};'。 –