🧑💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요
💚 어떤 기능인가요?
#70 에서 찾은 문제들(테이블 누락, 병원 조회가 전부 로그인 필수)을 CI 가 구조적으로 잡을 수 없는 상태입니다.
왜 못 잡았나
통합 테스트 4개가 전부 ddl-auto=create-drop 입니다. Hibernate 가 엔티티로부터 스키마를 만들어 내니까,
Flyway 마이그레이션이 엔티티와 아무리 어긋나도 테스트는 100% 통과합니다.
정책 북마크는 테이블 없이 API 와 리포지토리까지 있었고 조회수는 컬럼이 없어 저장된 적이 없었는데,
그 상태로 모든 테스트가 초록불이었습니다.
접근제어도 같습니다. SecurityConfig 는 선언 순서에 따라 앞선 규칙이 뒤를 덮는데, 규칙 자체는 멀쩡해
보여서 병원 조회가 통째로 막혀 있는 걸 아무도 눈치채지 못했습니다.
어떻게 막을 것인가
- 스키마: 운영과 같은 방식(Flyway 전체 적용 +
validate)으로 띄우는 테스트를 추가합니다.
엔티티에 필드를 넣고 마이그레이션을 안 쓰면 기동 단계에서 깨집니다. - 접근제어: 규칙을 읽는 대신 실제 응답 코드를 확인합니다. 공개여야 할 경로와 막혀야 할 경로를
표로 고정하고 MockMvc 로 상태코드를 검증합니다. H2 라 Docker 없이도 돕니다. - 조용한 skip 방지: Testcontainers 테스트는 Docker 가 없으면 skip 되고 빌드는 초록불이 됩니다.
스키마 검증이 그렇게 빠지면 의미가 없으므로 CI 에서 실제 실행 여부를 확인합니다.
✅ To Dos
🧑💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요
💚 어떤 기능인가요?
#70 에서 찾은 문제들(테이블 누락, 병원 조회가 전부 로그인 필수)을 CI 가 구조적으로 잡을 수 없는 상태입니다.
왜 못 잡았나
통합 테스트 4개가 전부
ddl-auto=create-drop입니다. Hibernate 가 엔티티로부터 스키마를 만들어 내니까,Flyway 마이그레이션이 엔티티와 아무리 어긋나도 테스트는 100% 통과합니다.
정책 북마크는 테이블 없이 API 와 리포지토리까지 있었고 조회수는 컬럼이 없어 저장된 적이 없었는데,
그 상태로 모든 테스트가 초록불이었습니다.
접근제어도 같습니다. SecurityConfig 는 선언 순서에 따라 앞선 규칙이 뒤를 덮는데, 규칙 자체는 멀쩡해
보여서 병원 조회가 통째로 막혀 있는 걸 아무도 눈치채지 못했습니다.
어떻게 막을 것인가
validate)으로 띄우는 테스트를 추가합니다.엔티티에 필드를 넣고 마이그레이션을 안 쓰면 기동 단계에서 깨집니다.
표로 고정하고 MockMvc 로 상태코드를 검증합니다. H2 라 Docker 없이도 돕니다.
스키마 검증이 그렇게 빠지면 의미가 없으므로 CI 에서 실제 실행 여부를 확인합니다.
✅ To Dos
validate스키마 정합성 테스트 (Testcontainers MariaDB)