폐기용 MySQL을 실행 단위로 분리한 이유
MySQL 통합 테스트의 데이터와 접속 경로를 실행마다 분리하고, DB가 종료된 뒤 데이터 폴더를 정리하는 절차를 설명합니다.
태그
이 주제로 남긴 기록 12편
MySQL 통합 테스트의 데이터와 접속 경로를 실행마다 분리하고, DB가 종료된 뒤 데이터 폴더를 정리하는 절차를 설명합니다.
얼쑤의 MySQL 통합 테스트 174개 중 53개가 실패한 기록을 바탕으로, Spring이 캐시한 컨텍스트의 연결 풀이 어떻게 DB 한도에 닿는지 살펴봅니다.
앱이 열 수 없는 내부 녹음 주소를 반환하던 문제를 고치고, 저장소별 응답과 만료 시각을 검증했습니다.
연습 기록을 저장하는 동안 삭제가 기다리는지, 고정 지연 대신 MySQL이 보고한 행 잠금 대기로 확인했습니다.
가입 테스트가 남긴 회원이 기본 악기를 참조했습니다. 그 상태를 한 행으로 재현하고, 악기 행을 삭제하던 픽스처를 같은 ID의 값을 갱신하는 방식으로 바꿨습니다.
같은 세션에 동시에 녹음을 올려도 DB가 접수한 원본이 남도록, 요청별 객체 키와 조건부 갱신을 조합해 검증했습니다.
테스트 데이터가 두 조건에 동시에 걸리면 그중 하나가 빠져도 결과가 같습니다. 성취도 조회의 SQL 조건을 각각 검사하도록 데이터를 바꾼 과정입니다.
같은 테스트 트랜잭션에서 JDBC가 갱신한 행을 MyBatis가 옛 값으로 돌려줬습니다. 검사 목적에 맞춰 픽스처를 나눴습니다.
서버 수신 시각이 결과를 바꾸는 체류 기록 HTTP 테스트에서 시계를 고정하고, 다른 업무의 시계와 적용 범위를 나눈 방법입니다.
Spring이 만든 406의 상태와 헤더를 보존하면서 앱이 읽는 JSON 오류 본문을 돌려주고, 실제 HTTP에서 확인했습니다.
작업 트리를 바꾸지 않는 병합 검사와, 실제 병합 뒤 스키마 제약까지 확인하는 DB 테스트를 구분했습니다.
운영 프로필에서 등록되지 않던 업무 API를 연결하고, 미리 마이그레이션한 MySQL에서 약관 HTTP 200과 Flyway 빈의 부재를 확인했습니다.