issues
search
CodyBuilder-dev
/
my-item-stock
0
stars
0
forks
source link
목업 테스트용으로 H2 데이터베이스 고려
#63
Open
CodyBuilder-dev
opened
3 years ago
CodyBuilder-dev
commented
3 years ago
요구사항
CRUD 기능을 위한 목업 테스트를 작성하면서 아래와 같은 의문 발생
R(조회)를 위한 목업 테스트는, 단순히 when 메서드를 이용해 반환값을 하드코딩하면 되므로 비교적 쉽다
그렇다면 CUD에 대한 목업 테스트는 어떻게 해야 할까?
H2 인메모리 데이터베이스를 이용한 테스트코드 구현
로컬에서 서버를 기동할 경우, 자동으로 h2 데이터베이스로 접근하도록 설정한다
손으로 테스트할 때, 서버를 켠 후 진짜 서비스 사용과 동일하게 API호출을 통해 테스트를 수행한다
테스트코드상에서도 목업이 아니라 진짜 repository를 의존성 주입받아서 실제로 CUD를 수행해본다
CodyBuilder-dev
commented
3 years ago
로컬 개발환경 H2 데이터베이스 연결법
H2 설정 옵션 참조
https://www.h2database.com/html/features.html
CodyBuilder-dev
commented
3 years ago
로컬 H2 DB를 쓸 것이냐 vs 공용 개발 DB를 쓸 것인가
로컬 DB를 쓸 경우
스키마 변경이 자유롭고 데이터 유실의 걱정이 없으므로 추가기능 등을 두려움 없이 개발 가능하다
다만, 개발DB 내의 실제 데이터 및 프로시저 등을 활용할 수 없고, 개발 DB와 연결된 개발서버 인프라 등과 연동이 어렵다
H2 DB 세팅과 운영DB 세팅을 동기화시키는 별도 작업이 필요하다
(중요) H2에서는 성공하지만 운영DB에서는 실패하는 코드 등이 생길 수 있다
https://phauer.com/2017/dont-use-in-memory-databases-tests-h2/
공용 개발 DB를 쓰는 경우
실제 데이터 및 프로시저 등을 활용할 수 있다
개발DB는 운영DB와 유사하므로 별도의 세팅 동기화 작업이 필요없다
스키마 변경 등은 굉장히 제한적이므로 적극적인 신규 기능 추가 등은 힘들다
CodyBuilder-dev
commented
3 years ago
(참고) 목업 테스트에서 save를 하는 방법
Mockito 내부적으로 save를 흉내내는 방법 자체는 있다
https://mkyong.com/spring-boot/spring-mockito-unable-to-mock-save-method/
https://stackoverflow.com/questions/51247796/how-to-mock-jpa-repositorys-save-method-in-unit-tests
다만 save가 잘 되는지를 테스트하는 것이 아니라 save를 흉내내는 것임에 유의
요구사항
H2 인메모리 데이터베이스를 이용한 테스트코드 구현