litlight 2024. 6. 17. 11:10

🗓️ 주제 : Controller, Service, Entity, DTO 레이어에 맞는 단위 테스트 작성하기🗓️

⚠️ Warning : 꼭 지켜야 할 것! ⚠️
 given-when-then 전략 지키기!
테스트 코드 작성시 given-when-then 패턴으로 주석과 함께 3등분해서 나누어서 작성해주세요.
given(준비) - when(실행) - then(검증) 순으로 작성해야 가독성이 좋고 관리가 편리해집니다.

✔️ 첫 번째 요구사항

  • AOP 추가하기
    • 모든 API(Controller)가 호출될 때, Request 정보(Request URL, HTTP Method)를 @Slf4J Logback 라이브러리를 활용하여 Log로 출력해주세요.
    • 컨트롤러 마다 로그를 출력하는 코드를 추가하는것이 아닌, AOP로 구현해야만 합니다.

✔️ 두 번째 요구사항

  • DTO, Entity Test 추가하기
    • @Test 를 사용해서 DTO 와 Entity Test 를 추가합니다.
    • User, Post, Comment, DTO 에 존재하는 메서드들에 대해서 “단위 테스트” 를 추가합니다.
    • 특정 상황에 예외가 정상적으로 발생하고 있는지도 테스트 합니다.

✔️ 세 번째 요구사항

  • Controller Test 추가하기
    • @WebMvcTest 를 사용하여 Controller Test 를 추가합니다.
    • Post, Comment Controller 에 대해서 테스트를 추가합니다.
    • 특정 상황에 예외가 정상적으로 발생하고 있는지도 테스트 합니다.

✔️ 네 번째 요구사항

  • Service Test 추가하기
    • @ExtendWith 를 사용하여 Service Test 를 추가합니다.
    • User, UserDetails, Post, Comment Service 에 대해서 “통합 테스트” 를 추가합니다.
    • 단순 DB CRUD 와 별개로 코드 레벨에서의 비즈니스 로직에 대한 테스트가 필요한 경우라면 “단위 테스트”를 추가합니다.
      • ex) 비밀번호가 암호화 되었는가
    • 특정 상황에 예외가 정상적으로 발생하고 있는지도 테스트 합니다.