我有一个函数正在接收请求并发送响应并为该方法创建Junit测试用例但我无法模拟Dao.getSessionFactory()。getCurrentSession()。flush();
我的测试班:
@RunWith(PowerMockRunner.class)
@PrepareForTest({SessionFactory.class,Session.class})
public class ClassNameTest{
private ClassName className;
private ServiceDao mockServiceDao = mock(ServiceDaoImpl.class);
@Test
public void testAbc() {
SessionFactory mockSessionFactory=PowerMockito.mock(SessionFactory.class);
Session mockedSession= PowerMockito.mock(Session.class);
mockServiceDao.setSessionFactory(mockSessionFactory);
Mockito.when(mockSessionFactory.getCurrentSession()).thenReturn(mockedSession);
---rest of the code---
}
同时调试它在mDao.getSessionFactory()中抛出异常.getCurrentSession()。flush(); 引起:java.lang.NullPointerException
注意:我的jar正确,因为我尝试了最终和静态类的演示示例,测试成功但是对于这个项目,它为Sessionfactory创建了模拟对象,但没有为session创建。
答案 0 :(得分:0)
简而言之,不要这样做。你正在创建一个非常脆弱的测试,实际上并没有证明你想要它。你正在嘲笑如何使用一个框架,它不能保证你的代码是否真的有效。
对于这些类型的测试,您实际上想要往返于实际的数据库并完全忘记模拟。你可以在这里尽可能多地进行模拟,你的代码仍然无法正常工作。