Springboot

fixtureMonkey, JakartaValidationPlugin 제약 조건 설정

땍땍 2024. 10. 6. 17:05

공식 문서

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
  • @Email

Time 타입

Supported Types: Calendar, Date, Instant, LocalDate, LocalDateTime, LocalTime, ZonedDateTime, Year, YearMonth, MonthDay, OffsetDateTime, OffsetTime

  • @Past
  • @PastOrPresent
  • @Future
  • @FutureOrPresent

Container Type

  • @Size
  • @NotEmpty