2016-07-01 7 views
0

MySQL을 응용 프로그램 데이터베이스로 사용하지만 HSQL을 테스트 인 메모리 데이터베이스로 사용하고 있습니다. 이제 문제는 내가 SQL의 selectQuery 아래와 같이 가질 수 있습니다 :) 이제HSQL 및 MySQL의 차이점

SELECT date(a.created_at) as record_date 
FROM table a 

, 날짜 (날짜에 날짜 시간을 변환 MYSQL의 함수이지만, HSQL에서 동일한 기능이 TO_DATE은()이다. 자, 위의 쿼리를 데이터베이스에 전달하고 출력을 얻는 메소드가 있습니다.

public Response dbQueryThroughJdbcTemplate(String selectQuery){ 
     jdbcTemplate.query(selectQuery, RowMapper); //RowMapper maps output to Response 
    } 

는 지금, 나는 테스트 환경은 HSQL DB를 사용하고 지금처럼 시험 날짜 방법을 사용할 수 없다는 오류가 발생합니다

@Test 
public void testDbQueryThroughJdbcTemplate(){ 
     Response response = dbQueryThroughJdbcTemplate(selectQuery); 
     TestCase.assertEquals(expected, response); // avoided the code for making expected object 
} 

이 방법을 테스트하기위한 시험 방법을 가지고있다.

이 문제를 해결하는 방법이나 더 좋은 방법은 무엇입니까?

+0

무엇인지에 대한 테스트를 모두 지원하는 대안을 시도 할 수 있습니다? HSQL이 작동하면 테스트 할 필요가 없습니다. 사용 된 쿼리 메커니즘과 독립적 인 올바른 결과를 얻을 수 있는지 테스트하십시오. 문제가 완전히 쿼리를 변경해야하는 경우 : 그렇게해서는 안됩니다. MySQL을 사용하거나 데이터베이스 호출을 조롱하십시오. – Gimby

+0

@ 김비, 더 명확하게 질문을 업데이트했습니다. – greperror

+0

내가 말했듯이, 당신은 잘못된 것을 테스트하고 있습니다. MySQL의 날짜 함수와 HSQL의 날짜 함수가 작동하면 테스트 할 필요가 없습니다. 테스트해야하는 것은 애플리케이션이 쿼리 결과에 어떻게 반응하는지, 그리고이를 조롱하여 데이터베이스를 테스트에서 제외시키는 것입니다. – Gimby

답변

1

당신은 HSQLDB와 MySQL

SELECT CAST(a.created_at AS DATE) as record_date FROM table a