본문 바로가기
개발/Spring

[Spring] Junit5로 예외테스트 하기

by 상용최 2020. 12. 6.
반응형

JUnit4 에서는 아래와같은 어노테이션으로 예외를 테스트 했습니다.

@Test(expected=DuplicateKeyException.class)

 

JUnit5 에서는 예외 테스트의 방법이 달라집니다.

어노테이션에서 아래와같은 메소드를 사용하는 방식으로 변경 되었습니다.

 

사용법

첫번째 인자로 기대하는 예외 클래스를 줍니다.

두번째 인자로 실행하려는 로직을 줍니다.

 

예제

@Test
@DisplayName("이미 있는 ID로 회원가입시 실패")
public void duplication_check_when_signup() throws Exception{
    assertThrows(DuplicateKeyException.class, ()-> {
    Account account = Account.builder()
        .userId("test")
        .password("test")
        .name("test")
        .build();

    accountService.signup(account);
    accountService.signup(account);
    });
}
@Service
@RequiredArgsConstructor
public class AccountService {

    private final AccountRepository accountRepository;
    private final PasswordEncoder passwordEncoder;

    public Account signup(Account account) {
        boolean isPresent = accountRepository.findById(account.getUserId())
                .isPresent();

        if(isPresent){
            throw new DuplicateKeyException(account.getUserId() + "는 이미 등록되어 있는 아이디입니다.");
        }

        account.encryptePassword(passwordEncoder);
        return accountRepository.save(account);
    }
}
반응형

댓글