독립 테스트 환경 구축

inho ha·2022년 5월 28일
0

테스트 코드 작성중 이상한 점 발견

유저를 20명 넣고 findAll 을 한 뒤 출력을 해봤는데 user1~10이 2번씩 들어가있다.

문제점

유저 이름에 유니크 제약 조건을 걸지 않았다
-> entity에 유니크 제약 조건이 없는거 처리해주기

로컬 데이터베이스에서 테스트를 진행하고 있었다.
-> 로컬 데이터베이스의 데이터와 테스트 데이터가 혼합되어 기대하지 않은 결과가 발생함
-> 독립 테스트 환경 구축해주기

독립 테스트 환경 구축 방법

찾아보니 크게 2가지 방법이 존재한다.

  1. h2로 테스트 데이터베이스를 구축하여 인메모리로 빠른 테스트 환경 구축

빠른 속도가 장점이다.
실제 서비스에서 이용하는 db는 mysql인데 h2로 테스트를 진행하므로 실제 쿼리 수행과 차이가 있을수 있다고 한다.
직관적으로는 hibernate 가 잘 처리해줘서 실제 쿼리 수행과 차이가 없지 않을까 하는 생각이 든다.
스키마 설정을 따로 해줘야한다고 한다.

  1. testContainer 를 사용하여 테스트시 스키마 생성하여 테스트 진행

이 방법은 도커에 새로운 스키마를 생성하도록 하는 방법인데 상대적으로 속도가 느리다고 한다.
ci 처럼 서버에서 이용시 메모리 사용량에 주의해야 된다고 한다.
그런데 h2도 메모리 사용량에 주의해야 하지 않을까? 하는 생각이 들긴한다.

결론

일단 h2 사용이 간편해 보인다.
하지만 실제 쿼리 수행과 차이가 있을 수 있다는 블로그 글 때문에 이게 사실인지 팩트체크가 필요해 보인다.
tdd를 수행하다가 테스트 코드가 자꾸 실패해서 막 다 뜯어 고쳤는데 알고보니 쿼리 수행 차이 때문이라면 눈물이 차올라서 고개를 살짝 들것 같다.

profile
iha / ian / inho ha

0개의 댓글