我正在尝试对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);
}
}
答案 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。 对于测试,根据您的需要使用密钥从地图中检索数据!