使用jdbc JAVA在DAO类上的Spring unitTest

时间:2016-01-10 16:46:30

标签: java spring unit-testing jdbc

我正在尝试对DAO类中的方法进行单元测试。 Dao类正在使用JDBC。我试图对它进行单元测试但不使用测试数据库。我必须使用一些数据结构来测试它以存储所有信息。

public class UserProfilesDao extends JdbcDaoSupport {

    @Autowired
    private MessageSourceAccessor msa;

        public long getUserServiceId(long userId, int serviceId) {
            String sql = msa.getMessage("sql.select.service_user_id");
            Object[] params = new Object[] { userId, serviceId };
            int[] types = new int[] { Types.INTEGER, Types.INTEGER };
            return getJdbcTemplate().queryForLong(sql, params, types);
        }
}

2 个答案:

答案 0 :(得分:1)

getJdbcTemplate()似乎是一个你要模拟的方法。

在您的单元测试中,声明UserProfilesDao成员,如下所示:

@Spy
private UserProfilesDao classToTest;
@Spy是一个模拟注释。

单元测试中的

声明一个设置方法如下:

@Before
public void preTestSetup()
{
    MockitoAnnotations.initMocks(this);

    doReturn(what ever you want).when(classToTest).queryForLong(
        any(xxx.class),
        any(yyy.class),
        any(zzz.class));
}

其中xxx,yyy和zzz是queryForLong参数类型。

答案 1 :(得分:0)

您可以将数据存储在DTO对象中,并使用正确的密钥在地图中维护DTO。 对于测试,根据您的需要使用密钥从地图中检索数据!