그럼 지금까지 만든 코드는 어떻게 동작하나?
→ 테스트 코드로 확인하기가 쉽지 않다
장애가 발생했을 때 일어나는 현상 중의 하나인 예외가 던져지는 상황을 의도적으로 만들어보자
try1. 예외를 강제로 발생시키는 애플리케이션 코드 수정
- 테스트를 위해 코드를 함부로 건드리는 것은 좋은 생각이 아니다.
현재 테스트용 사용자 정보 중 두번째와 네번째 → 업그레이드 대상 1. 네번째 사용자 처리 중 예외 발생 2. 두번째 사용자 정보가 취소되었는지, 그대로 남았는지 확인하자.
private
: 제약이 강한 접근 제한자UserService
서브 클래스에서 오버라이딩하려는 메서드
upgradeLevels()
의 작업이 중단된다.protected
로 설정하자.UserService 의 테스트용 대역 클래스
static class TestUserService extends UserService{
private String id;
private TestUserService(String id){
this.id = id;
}
protected void upgradeLevel(User user){
if (user.getId().equals(this.iid)) throw new TestUserServiceException();
super.upgradeLevels(user);
}
}