Skip to content

[Study] Spring Test #34

@kkho9654

Description

@kkho9654
  • 유닛테스트 할 때 레이어별로 테스트를 하는 방법에 대한 공부 및 자료

요약

준비

  1. mockito 사용 방법
  • 의존성 주입 : 유닛테스트할 때 필요한 의존성들을 임의로 주입시킨다.
  • 만약 XXXService를 테스트한다고 하고 XXXService가 XXXRepository를 의존하고 있다면 XXXRepository를@mock으로, XXXService을 @injectMocks으로 하면 된다.
  • `@ExtendWith(MockitoExtension.class)을 통해 사용해라
  • mock객체 만드는 방법 및 주입
    • @Mock : Mock객체(가짜객체) 반환해주는 어노테이션
    • @injectMocks : @Mock으로 생성된 가짜 객체를 이 어노테이션이 달린 애한테 주입시켜준다.
  1. Stub
  • Mock객체로 만들어진 가짜객체의 시나리오를 작성한다
    • doReturn(): Mock 객체가 특정한 값을 반환해야 하는 경우
    • doNothing(): Mock 객체가 아무 것도 반환하지 않는 경우(void)
    • doThrow(): Mock 객체가 예외를 발생시키는 경우

Given, When, Then

일반적으로 테스트 코드를 작성할 때 Given - When - Then (준비, 실행, 검증) 패턴을 활용하면 더 쉽게 코드를 작성할 수 있습니다.

주석을 통해 미리 나눠놓고 짜자

  • Given : 준비
    • mock 객체를 정의하거나, mockito를 이용하여 stubbing 하는 과정
  • When : 실행
    • 실제로 호출되어 실행되는 과정
  • Then : 검증
    • 기댓 값과 비교하거나, 예상대로 메서드가 호출되었는지 검증

Layer별 Test코드 작성

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions