인프런 커뮤니티 질문&답변

min102님의 프로필 이미지

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Presentation Layer 테스트 (2)

프레젠테이션 레이어 테스트 코드 작성시 코틀린 non-nullable

23.11.14 05:45 작성

·

334

·

수정됨

0

안녕하세요. 강의 잘 보고 있습니다.

 

요청 객체를 테스트(ex. 신규상품을 등록할때 타입은 필수 값이다.) 할 때에 코틀린을 사용하는 경우 productType은 non-nullable 입니다.

 

data class ProductCreateRequest(

    @field:NotNull(message = "상품 타입을 선택해주세요.")
    val type: ProductType,

    @field:NotNull(message = "판매 상태를 선택해주세요.")
    val sellingStatus: ProductSellingStatus,

    @field:NotBlank(message = "상품명을 입력해주세요.")
    val name: String,

    @field:Positive(message = "상품 가격을 입력해주세요.")
    val price: Int,
)

 

이런 경우 enum 타입은 bean Validation에서 NotNull이나 NotBlank에 대한 테스트는 불가능한 상태인데요.

 

이렇게되면 테스트 가능한 것들만 하는게 맞는건가요?

답변 2

0

박우빈님의 프로필 이미지
박우빈
지식공유자

2023. 11. 20. 09:19

안녕하세요, min102 님! :)

코틀린으로 작성중이시군요. 👍
그런 경우에 저는 Request DTO에서 nullable한 타입으로 열어놓고, bean validation으로 검증하는 방법을 사용합니다.
검증 이후에는 Request DTO에서 값을 외부로 반환할 때 null이 아님을 보장해서 타입을 변환해주고요. (ex. String? -> String)

코틀린의 장점을 활용해서 not-null 타입으로 언어 레벨에서 막아도 되지만, 클라이언트와 소통할 때에 어떤 필드가 누락되거나 잘못 보내졌는지 클라이언트 측에 상세하게 알려주기 위해서 일부러 bean validation으로 검증하는 방법을 선호하고 있어요.
요 방법은 필요하다고 판단하는 경우에만 적용해서 사용하시면 될 것 같습니다.

도움이 되셨기를 바랍니다.
감사합니다. :)

0

인프런 AI 인턴님의 프로필 이미지

2023. 11. 16. 05:51

안녕하세요 min102 님, 인프런 AI 인턴이에요.

제공해주신 코드에서 보여지는 바와 같이, enum 타입은 자체적으로 null이 아니기 때문에 @NotNull 어노테이션을 추가하는 것은 의미가 없습니다.
Bean Validation은 주로 String 타입의 필드에 대해서 적용하는 것이 일반적입니다.

따라서, 테스트 가능한 요소에 대해서만 검증을 진행해도 됩니다. enum 타입은 값의 유효성 여부를 별도의 테스트케이스로 확인하시는 것이 좋습니다.

강의를 잘 보고 계시다니 감사합니다! 추가로 궁금한 사항이 있으시면 언제든지 질문해주세요. 감사합니다!

min102님의 프로필 이미지

작성한 질문수

질문하기