Junit5

: xUnit이라는 유닛테스트 프레임워크의 일환으로 Java용으로 개발된 프레임워크

https://junit.org/junit5/

 

JUnit 5

The JUnit team uses GitHub for version control, project management, and CI.

junit.org

 

  • JUnit은 단위테스트를 실행하고 결과를 검증해서 전체 결과를 리포트해주는 프레임워크
  • 사용자가 직접 동작시킬 수도 있으며 Gradle이나 Maven 등을 통해 빌드하면서 테스트 가능
  • spring-boot-starter-test에 기본적으로 JUnit5 포함됨
    • 참고: 스프링부트 2.4 부터는 JUnit4을 동작시킬 수 있게 해주던 junit-vintage-engine이 제거

Mockito

  • 이름과 비슷하게 Mock을 만들어주는 라이브러리
  • 해결하고자 하는 점?
    • 테스트하고자 하는 클래스가 의존하는 클래스를 모두 만들려다보니 테스트 만들기가 어렵다.
    • 모든 클래스가 동작하다보면 어떤 부분이 문제인지 알기가 어렵다.

→ 가짜(Mock)를 만들어서 내가 원하는 방식으로 동작하게 하자 → Mockito 라이브러리 활용!

@Test
    void useBalanceSuccess() {
        //given
        given(userRepository.findById(anyLong()))
                .willReturn(Optional.of(AccountUser.builder().id(1L).name("seyol").build()));
        given(accountRepository.findByAccountNumber(anyString()))
                .willReturn(Optional.of(createAccount()));
        given(transactionRepository.save(any()))
                .willReturn(createTransaction());
        //when
        TransactionDto transactionDto = transactionService.useBalance(1L, "123456", 1000L);
        //then
        assertEquals(TransactionResultType.S, transactionDto.getTransactionResult());
    }