반응형
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);
}
}
반응형
댓글