목록2025/06/23 (2)
코딩 이래요래

단일 테스트는 통과, 전체 테스트는 실패... 타임존의 늪에 빠지다오늘은 테스트 코드를 작성하던 중 예상치 못한 Time-zone 이슈를 마주했다.분명히 PostgreSQL에선 잘 작동하던 로직인데, H2로 테스트하면 실패하는 상황이다. 이건 단순한 코드 실수가 아니라고 생각했다.한줄 한줄 의심하며 로그를 까보던 내 하루를 이곳에 기록해보려 한다. 테스트 시나리오@BeforeEach로 조회용 메세지 3개를 Thread.sleep을 이용하여 시간차를 두고 저장한다.각 메세지에는 @CreatedDate Instant createdAt이 자동으로 생성된다.그 중 가장 최근 메세지의 createdAt을 커서로 지정하고,createdAt List result = messageRepository .findBy..
Q. 애플리케이션의 각 계층에서 수행되는 입력값 검증의 범위와 책임을 어떻게 나눌 것인지에 대해 설명해주세요. 특히 중복 검증을 피하면서도 안정성을 확보하는 방안과, 이와 관련된 트레이드오프에 대해 설명해주세요. 1. Controller형식적(Validational) 검증ex: @Valid, @Pattern, @NotNull, @Min, @Size 등클라이언트의 입력이 형식적으로 유효한지 확인 (JSON Body, Query Param 등)2. Service비즈니스 규칙 검증ex: 부서 인원 수가 50명을 넘을 수 없음, 입사일이 오늘 이후일 수 없음 등도메인 제약이나 로직 상의 규칙을 보장함3. Persistence (Repository / DB)데이터 정합성을 위한 최종 방어선ex: DB 제약조건 (..