로컬에서 사용하는 애플리케이션 서버와 테스트에서 같은 데이터베이스를 사용하고 있으니 테스트에서 문제가 발생한다.
이런 문제를 해결하려면 테스트를 다른 환경과 철저하게 분리해야 한다.
가장 간단한 방법은 테스트 전용 데이터베이스를 별도로 운영하는 것이다.
● 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 |