docs(agents): 저장 시각 정밀도와 DB 왕복 검증 규칙을 명시한다
This commit is contained in:
@@ -18,3 +18,17 @@
|
||||
- embedded Redis는 모든 테스트에 전역 등록하지 않는다. `src/test/resources/META-INF/spring.factories`로 `EmbeddedRedisInitializer`를 등록하면 Redis가 필요 없는 `@DataJpaTest`까지 Redis를 시작하므로 금지한다.
|
||||
- Redis가 필요한 통합 테스트만 `@ContextConfiguration(initializers = [EmbeddedRedisInitializer::class])`로 명시적으로 opt-in 한다.
|
||||
- Redis가 필요 없는 JPA/QueryDSL 슬라이스 테스트는 기존 관례처럼 `@DataJpaTest(properties = ["spring.cache.type=none"])`로 캐시를 끈다.
|
||||
|
||||
## 저장 시각·응답 왕복 검증 규칙
|
||||
- DB 재조회 시각과 API 응답을 비교하는 테스트는 OS의 현재 시각만 사용하지 않는다. 기존 시각 주입 seam을 재사용해
|
||||
나노초 `0`, `123456789`, `999999999`와 `23:59:59` 같은 초/날짜 경계 입력을 고정한다.
|
||||
- 실제 repository/DB에 저장한 뒤 `flush`/`clear`/재조회 또는 별도 트랜잭션 재조회로 DB 정밀도 변환을 통과시킨다.
|
||||
저장 인자나 managed entity, mock 반환값만 비교해서는 DB 왕복을 검증했다고 하지 않는다.
|
||||
- 초 단위 컬럼이면 고정 기대값의 나노초가 0이고 다음 초/날짜로 반올림되지 않으며, DB 값과 서비스 결과 및 HTTP 응답이
|
||||
기존 직렬화 계약으로 정확히 일치하는지 확인한다. 기존 실제 HTTP의 완전 일치 assertion도 유지한다.
|
||||
- assertion 양쪽을 잘라 비교하거나 시간 허용오차·문자열 일부 비교·skip으로 저장/응답 불일치를 숨기지 않는다.
|
||||
먼저 미정규화 코드의 실패를 확인하고 production 저장 경계에서 같은 값을 쓰도록 고친다.
|
||||
- H2 기본 timestamp 정밀도가 운영 MySQL DDL과 같다고 가정하지 않는다. 사용한 DB/컬럼과 검증 경계를 기록하고,
|
||||
CI의 expected/actual이 없으면 고정 입력 재현 결과와 CI 원본 재현 여부를 구분한다.
|
||||
- 선례: `GiftAdminServiceTest.shouldPersistAndReturnSameSecondPrecisionCancellationTime` 및
|
||||
선물하기 계획 `P14-T4`/`P16-R1`. 공유 formatter의 변경 없이 업무별 단일 시각 정규화를 검증한다.
|
||||
|
||||
Reference in New Issue
Block a user