且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

用mockito对DAO层进行单元测试

更新时间:2023-09-17 12:11:52

EmployeeDAOImpl contains the following code:

    Criteria cr = session.createCriteria(Employees.class, "employees").setResultTransformer(
            Criteria.DISTINCT_ROOT_ENTITY);

Your test has:

    Mockito.doReturn(criteria).when(session)
            .createCriteria(ConceptModelDetails.class);

You are correctly mocking out sessionFactory and the session that it is returning, as far as I can tell from your code. However, you are not correctly mocking out session.createCriteria(Employee.class, "employees") (instead, you are setting the return value for session.createCriteria(ConceptModelDetails.class)). Therefore, the return value from the mock will be null. So when you dereference it immediately (calling setResultTransformer), you will get a NullPointerException.

To verify this, try stepping into the debugger, or adding log statements to EmployeeDAOImpl, that show the values of sessionFactory, session, and the result from session.createCriteria(...).

相关阅读

推荐文章