【发布时间】:2016-07-01 08:11:13
【问题描述】:
我使用 MySQL 作为我的应用程序数据库,但使用 HSQL 作为测试内存数据库。现在的问题是我有一个 SQL selectQuery,如下所示:
SELECT date(a.created_at) as record_date
FROM table a
现在,date() 是 MYSQL 中用于将 DateTime 转换为 Date 的函数,但在 HSQL 中,相同的函数是 to_date()。现在,我有一个方法可以将上述查询命中数据库并获取输出。
public Response dbQueryThroughJdbcTemplate(String selectQuery){
jdbcTemplate.query(selectQuery, RowMapper); //RowMapper maps output to Response
}
现在,我有一个测试方法来测试这个方法,
@Test
public void testDbQueryThroughJdbcTemplate(){
Response response = dbQueryThroughJdbcTemplate(selectQuery);
TestCase.assertEquals(expected, response); // avoided the code for making expected object
}
现在,由于测试环境使用的是HSQL db,测试会抛出date方法不可用的错误。
如何解决这个问题,或者有什么更好的方法来解决这个问题?
【问题讨论】:
-
测试什么? HSQL 工作,你不需要测试它。测试你得到正确的结果,这与所使用的查询机制无关。如果问题是您需要完全更改查询:您不应该这样做。要么使用 MySQL,要么模拟数据库调用。
-
@Gimby,更新了问题以使其更清晰
-
正如我所说,您正在测试错误的东西。 MySQL 的 date 函数和 HSQL 的 date 函数可以工作,你不需要测试。您应该测试的是您的应用程序如何响应查询的结果,这允许您通过模拟数据库将其从测试中移除。
标签: java mysql hsqldb jdbctemplate