Я использую MySQL в качестве базы данных приложений, но HSQL как тестовую базу данных в памяти. Теперь вопрос у меня есть SQL SelectQuery, как показано ниже:Разница в HSQL и MySQL
SELECT date(a.created_at) as record_date
FROM table a
Теперь, дата() является функцией в MYSQL для преобразования DateTime в дате, но в то же 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 дБ, тест выдает ошибку, что метод дата отсутствует.
Как выйти из этой проблемы или любой лучший способ достичь этого?
тест на что? HSQL работает, вам не нужно проверять это. Проверьте, что вы получаете правильные результаты, которые не зависят от используемого механизма запроса. Если проблема в том, что вам нужно полностью изменить запрос: вы не должны этого делать. Либо используйте MySQL, либо высмеиваете вызовы базы данных. – Gimby
@Gimby, обновил вопрос, чтобы сделать его более ясным. – greperror
Как я уже сказал, вы проверяете неправильные вещи. Функция даты MySQL и функции даты HSQL работают, вам не нужно проверять это. То, что вы должны тестировать, - это то, как ваше приложение реагирует на результат запроса, и это позволяет вам вывести базу данных из теста, издеваясь над этим. – Gimby