@Bean
public EntityManager(EntityManagerFactory emf) {
//...
}
如何在JUnit
測試中快速模擬這兩種豆(em + emf)? 是否有一些框架允許我定義例如@Mock EntitiyManager em;
?如何在春季單元測試中快速模擬服務?
@Bean
public EntityManager(EntityManagerFactory emf) {
//...
}
如何在JUnit
測試中快速模擬這兩種豆(em + emf)? 是否有一些框架允許我定義例如@Mock EntitiyManager em;
?如何在春季單元測試中快速模擬服務?
看看springockito連同spring-test。它將spring和mockito集成在一起,並支持基於註釋的mock和在spring applicationContext中配置的mock。
太好了,正是我在找的東西:一個簡單的'@ ReplaceWithMock'來模擬任何服務。 – membersound
您似乎知道@Mock
註釋,所以大概你知道Mockito是什麼。你只是嘲笑EntityManager
完全一樣的方式,你會嘲笑其他任何東西。
@Mock EntitiyManager em;
initMocks();
MyService myService = new MyServiceImpl(em);
史蒂夫,很好的名字,很好的答案:) – vikingsteve
史蒂夫,你不覺得嘲笑EntityManager不是編寫單元測試的最佳方式嗎?它違反了衆所周知的「不要嘲笑你不自己的原則」。我會說,使用嵌入式數據庫編寫測試並測試真實組件,而不是假設EntityManager會做什麼,並嘲笑/扼殺我們的期望,實際上會更好。 –
我使用內存數據庫進行測試,但有些東西使用mock進行了更好的測試。例如,如果我想測試一個服務方法是否能夠正確處理從'em.persist'調用的異常,那麼通過使用模擬的EntityManager來引發異常並驗證對它的處理是非常有效的。 – Steve
你見過Mockito和Powermock嗎? – vikingsteve
我認爲每個需要模擬的對象都需要相當多的配置。我寧願尋找一個框架,通過例如在該類上應用簡單的配置語句或註釋來嘲笑該類。 – membersound