2016-07-01 2 views
0

Я использую 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 дБ, тест выдает ошибку, что метод дата отсутствует.

Как выйти из этой проблемы или любой лучший способ достичь этого?

+0

тест на что? HSQL работает, вам не нужно проверять это. Проверьте, что вы получаете правильные результаты, которые не зависят от используемого механизма запроса. Если проблема в том, что вам нужно полностью изменить запрос: вы не должны этого делать. Либо используйте MySQL, либо высмеиваете вызовы базы данных. – Gimby

+0

@Gimby, обновил вопрос, чтобы сделать его более ясным. – greperror

+0

Как я уже сказал, вы проверяете неправильные вещи. Функция даты MySQL и функции даты HSQL работают, вам не нужно проверять это. То, что вы должны тестировать, - это то, как ваше приложение реагирует на результат запроса, и это позволяет вам вывести базу данных из теста, издеваясь над этим. – Gimby

ответ

1

Вы можете попробовать альтернативу, которая поддерживается как HSQLDB и MySQL

SELECT CAST(a.created_at AS DATE) as record_date FROM table a 
Смежные вопросы