Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Study] Spring Test #34

Open
kkho9654 opened this issue Apr 3, 2024 · 2 comments
Open

[Study] Spring Test #34

kkho9654 opened this issue Apr 3, 2024 · 2 comments
Labels

Comments

@kkho9654
Copy link
Contributor

kkho9654 commented Apr 3, 2024

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

요약

준비

  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코드 작성

@kkho9654 kkho9654 added the study label Apr 3, 2024
@kkho9654 kkho9654 pinned this issue Apr 4, 2024
@kkho9654 kkho9654 unpinned this issue Apr 4, 2024
@wintiger98
Copy link
Contributor

감사합니다!

@chanmin97
Copy link
Contributor

어렵다,,!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: No status
Development

No branches or pull requests

3 participants