2024. 6. 28. 21:03ㆍ개발자 과정/Kotlin
잘돌아가던 TestCode가 갑자기 안돌아 가기 시작했다.
난 나의 프로젝트에게 배신감을 느꼈다.
하지만 느낀건 둘째 치고 일단 해결은 해야했다.
분명 했는데 안한 취급받는건 너무 억울하니까~
처음엔 커밋을 롤백했다.
TestCode 브랜치를 따서 풀리퀘를 했었기 때문에,
작동되던 시점으로 롤백하는 것은 추적이 어렵지 않았었다.
하지만 그래도 안되었다.
그러다 문득 Test패키지 안에 resorces가 보였다.
내 1년간의 실무경력이 이곳이 불결한 곳임을 말하고 있었다.
그래서 yml폴더를 열어 어떤게 문제일지를 예측해 보았다.
datasource:
url: jdbc:h2:mem:test;MODE=MySQL;
driver-class-name: org.h2.Driver
in memory인 휘발성 DB...
Repository 테스트 할때만 잠깐 쓸텐데...
여기서 깨달은건 Comtroller나 Service Test는 실제 DB를 통해 테스트 하도록 되어 있는데,
Test Yml이 존재 함으로 인해 H2 in memory DB를 의존할 것이고,
in memory DB는 휘발성이기 때문에 깡통을 조회하고 있을거라는 추론이 완성되었다.!!!
그럼 어찌할까?
그냥 Test Yml을 날려서 실제 코드와 같은 yml을 공유하도록 하였다.
Repository Test는 영속성 컨텍스트에 저장만 해놓고, 실질적인 쿼리는 날리지 않도록 조절하였다.
아주 단순한 처리만 할 것이라면, 영속성 컨텍스트 또한 실제 DB를 복사한 휘발성 DB처럼 사용가능하지 않을까?
라는 생각에서 비롯된 해결책이었다.
240708 추가
더 알아보니 TestCode의 @transactional은 어차피 롤백된다고 한다.
결과는?
보기와 같이 해결~
이로써 나는 한층더 업그레이드 되었다.
여담
그래도 해결해서 다행이다.
난 억울할 일이 없겠다.
'개발자 과정 > Kotlin' 카테고리의 다른 글
괴도키드가 웹 크롤링을 한 이유 (0) | 2024.07.18 |
---|---|
N+1 성능 개선(사용자가 가르강튀아로 가기VS쿼리최적화) (0) | 2024.07.09 |
Kotlin으로 Spring Scheduler와 Spring Batch을 엮어보자! (0) | 2024.06.27 |
페이지블에 정렬 추가하기 (0) | 2024.06.21 |
UBIS 팀 프로젝트 기획 / 개발 기록 (0) | 2024.06.18 |