@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