공식 문서
https://naver.github.io/fixture-monkey/v1-0-0-kor/docs/plugins/jakarta-validation-plugin/features/
fixtureMonkey를 사용하여 실제 테스트 코드를 작성하다보면 무조건 한 번씩 발생하는 오류 중 하나가 필드별 제약 조건이다.
분명 닉네임 값은 필수 값이며, 최대 20자 까지 밖에 입력이 되지 않아야하지만, fixtureMonkey는 이를 무시하고 null 값을 반환하거나 최대 자리수를 초과하는 값을 생성하곤 한다.
이러한 문제는 JakartaValidationPlugin 를 사용하여 해결할 수 있다.
사용 가능한 어노테이션은 해당 글 하단에 작성해두었다. 공식 문서에서 가져온 내용이니 시간이 여유롭다면 공식 문서를 참고하는 것이 더 좋을 것같다.
아래와 같이 어노테이션을 추가하여 제약 조건을 설정해주면 되는데,
문자열의 길이를 제한 할 경우 @Size를,
숫자의 최소, 최대값을 제한할 경우 @Min @Max 를
Null 값 여부는 @Null @NotNull을
사용하면 된다.
아마 위의 어노테이션만 사용해도 대부분의 것들은 설정이 가능하겠지만,
아래 코드의 @pastOrPresent 와 같이 현재 시간 혹은 과거의 시간만을 설정해주는 ( 미래의 시간은 생성할 수 없음 ) 알아보고 사용하면 분명 도움이 되는 세부적인 내용들도 분명 있으니 사용 전에 꼭 공식 문서를 확인해보도록 하자
아래는 24/10/6 기준으로 공식 문서에 작성되어 있는 내용이다.
지원되는 타입들: BigDecimal, BigInteger, byte, double, float, int, long, short
- @Digits (소수 자리수는 현재 지원되지 않음)
- @Max
- @Min
- @Negative
- @NegativeOrZero
- @DecimalMax
- @DecimalMin
- @Positive
- @PositiveOrZero
Boolean 타입
- @AssertFalse
- @AssertTrue
String 타입
- @Null
- @NotNull
- @NotBlank
- @NotEmpty
- @Size
- @Digits
- @Pattern
Time 타입
Supported Types: Calendar, Date, Instant, LocalDate, LocalDateTime, LocalTime, ZonedDateTime, Year, YearMonth, MonthDay, OffsetDateTime, OffsetTime
- @Past
- @PastOrPresent
- @Future
- @FutureOrPresent
Container Type
- @Size
- @NotEmpty
'Springboot' 카테고리의 다른 글
스프링부트 통합 테스트 코드 작성법 및 예시( TestRestTemplate , MockMVC , WebTestClient 차이점 및 선택 방법) given-when-then (0) | 2025.01.28 |
---|---|
Exception Handler ( 커스텀 익셉션 ) 사용 이유 및 작성 방법 (0) | 2024.11.25 |
fixtureMonkey 객체 값 자동 생성 / springboot 테스트 코드 (0) | 2024.10.04 |
스프링부트 Repository TestCode ( 테스트 코드 / mybatis ) (0) | 2024.09.25 |
스프링부트 Repository 커스텀 (분리) (0) | 2024.09.23 |