Junit5
: xUnit이라는 유닛테스트 프레임워크의 일환으로 Java용으로 개발된 프레임워크
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());
}