로컬에서 사용하는 애플리케이션 서버와 테스트에서 같은 데이터베이스를 사용하고 있으니 테스트에서 문제가 발생한다.
이런 문제를 해결하려면 테스트를 다른 환경과 철저하게 분리해야 한다.


가장 간단한 방법은 테스트 전용 데이터베이스를 별도로 운영하는 것이다.

 

H2 데이터베이스를 용도에 따라 2가지로 구분하면 된다.
     jdbc:h2:tcp://localhost/~/test local에서 접근하는 서버 전용 데이터베이스
     jdbc:h2:tcp://localhost/~/testcase test 케이스에서 사용하는 전용 데이터베이스

 

 

 

데이터베이스 파일 생성 방법

 데이터베이스 서버를 종료하고 다시 실행한다.
 사용자명은 sa 입력
 JDBC URL에 다음 입력, 
 jdbc:h2:~/testcase (최초 한번)
 ~/testcase.mv.db 파일 생성 확인
 이후부터는 jdbc:h2:tcp://localhost/~/testcase 이렇게 접속

 

 

테이블 생성하기

testcase 데이터베이스에도 item 테이블을 생성하자.

drop table if exists item CASCADE;
create table item
(
 id bigint generated by default as identity,
 item_name varchar(10),
 price integer,
 quantity integer,
 primary key (id)
);

 

 

 

접속 정보 변경

이제 접속 정보를 변경하자 참고로 main 에 있는 application.properties 는 그대로 유지하고, test 에 있는 application.properties 만 변경해야 한다.

 

 

 

main - application.properties
src/main/resources/application.properties

spring.profiles.active=local
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=

#jdbcTemplate sql log
logging.level.org.springframework.jdbc=debug

 

 

 

test - application.properties
src/test/resources/application.properties

spring.profiles.active=test
spring.datasource.url=jdbc:h2:tcp://localhost/~/testcase
spring.datasource.username=sa
spring.datasource.password=

#jdbcTemplate sql log
logging.level.org.springframework.jdbc=debug

 

접속 정보가 jdbc:h2:tcp://localhost/~/test jdbc:h2:tcp://localhost/~/testcase 로 변경된 것을 확인할 수 있다

 

 

 

테스트에서 매우 중요한 원칙은 다음과 같다.


 테스트는 다른 테스트와 격리해야 한다.
 테스트는 반복해서 실행할 수 있어야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

처 : 김영환 스프링 DB2 강의

'데이터 접근 기술 > JdbcTemplate' 카테고리의 다른 글

테스트 - @Transactional  (0) 2022.08.15
테스트 - 데이터 롤백  (0) 2022.08.15
테스트 - 데이터베이스 연동  (0) 2022.08.14
JdbcTemplate 기능 정리  (0) 2022.08.14
JdbcTemplate - SimpleJdbcInsert  (0) 2022.08.12
복사했습니다!