인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

조희제님의 프로필 이미지
조희제

작성한 질문수

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

Presentation Layer 테스트 (2)

@RestControllerAdvice 와 @Validation

작성

·

43

0

 안녕하세요 선생님 좋은 강의 잘 듣고 있습니다!

다름이 아니라 Validation과 ControllerAdvice에

대해 질문이 있습니다.

 

  • 컨트롤러 테스트 할 때 빈 validation이 적용 된 모든 필드를 하나씩 모두 검증 하나요?

컨트롤러에서 request 필드가 많아서 하나씩 검증 하기엔 너무 테스트가 길지 않을까 고민 됩니다.

실무에서도 컨트롤러의 모든 필드를 검증 하나요?

 

  • 공통 예외 처리는 어떻게 하는게 좋을까요?

     

     

    @RestControllerAdvice를 basePackages 설정 하여 처리 하고 있습니다.

     

    image.png

    예상치 못한 예외의 경우가 생길것을 대비 하여

     

    basePackages가 없는 advice를 두었습니다.

     

    image.png

    이렇게 하니 우선 순위가 밀려서 GeneralAdvice

     

    먼저 선택되어 Order로 우선순위 설정 해두었습니다.

     

    처리 못한 예외를 각 advice에 넣자니 다른

    advice도 코드가 중복 될것 같아 이렇게 처리 했는데

     

    실무에서는 어떻게 처리 하시는지 궁금 하여 질문 남깁니다.!

 

답변 2

1

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

안녕하세요, 조희제 님!

 

컨트롤러 테스트 할 때 빈 validation이 적용 된 모든 필드를 하나씩 모두 검증 하나요?

테스트는 항상 자신이 필요하다고 생각하는 범위에 적용하시면 됩니다.
모든 필드를 검증하는 것이 물론 좋으나, 주어진 시간과 필드 중요도에 따라 선택할 수도 있는 것이죠.
상황에 맞게 결정하시면 됩니다.
저도 시간이 충분하다면 최대한 많이 검증하는 방향으로 테스트를 작성합니다.

 

공통 예외 처리는 어떻게 하는게 좋을까요?

특수한 경우가 아니면 도메인 Controller 별로 Advice를 두기 보다는, 공통 Advice 하나에서 우리 시스템의 에러 응답 포맷과 정책을 관리하는 편입니다.
보여주신 예시에서는 GeneralAdvice 하나만 관리하는 형태인 것이죠.

 

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

0

안녕하세요, 인프런 AI 인턴입니다. 조희제님, 좋은 강의 잘 듣고 계시다니 기쁩니다!

컨트롤러 테스트와 공통 예외 처리에 관한 질문을 주셨군요. 이 주제는 실무에서도 매우 중요합니다.

  1. 빈 Validation 필드 테스트:

    • 모든 필드를 하나씩 검증하는 것이 실용적이냐고 물으셨는데, 보통 실무에서는 핵심적인 비즈니스 로직에 직결되는 필드를 우선적으로 검증하고, 그 외의 필드는 대표 케이스로 테스트하는 방식을 사용합니다. 모든 필드를 개별적으로 테스트하기에는 테스트 코드가 방대해지고 유지보수에 어려움이 생길 수 있기 때문입니다.
    • 기존 질문 예시 - 컨트롤러에서 @Valid로 필드를 검증을 한 이후 질문에서 더 많은 정보를 얻을 수 있습니다. 여기에서는 컨트롤러에서 기본적인 검증을 수행한 후 서비스 레이어에서 검증할 필요성을 논의하고 있습니다.
  2. 공통 예외 처리:

    • @RestControllerAdvice를 통해 공통 예외 처리를 하고 계시군요. 특정 범위의 예외를 잡기 위한 조언을 basePackages를 설정하여 사용하지만, 일반적인 예외 처리를 위해서는 별도의 GeneralAdvice를 두는 것도 좋은 방법입니다.
    • 우선순위 문제를 Order로 설정하여 해결하신 것은 적절한 접근입니다. 공통 예외 핸들러와 특정 예외에 대한 핸들러의 중복 처리를 줄이기 위해, 특정 예외는 세밀하게 처리하고 나머지 예외는 일반적인 방식으로 처리하는 전략이 좋습니다.
    • 기존 질문 예시 - 강의를 다 듣고 몇가지 궁금점이 있어요에서 재사용 가능한 DTO의 생성과 공통 예외 처리 방법에 대해서도 논의되고 있으니 참고해 보세요.

각 회사나 프로젝트의 요구사항에 따라 다를 수 있지만, 이러한 기본적인 가이드라인을 따르면 보다 효율적으로 예외 처리를 할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

조희제님의 프로필 이미지
조희제

작성한 질문수

질문하기