728x90
스프링 기반 REST API 개발
5. REST API 보안 적용
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/spring-rest-api-study/tree/chap05-03_exception_test
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/spring_rest-api/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
3. 예외 테스트
1. @Test(expected)
예외 타입만 확인 가능
@Test(expected = UsernameNotFoundException.class)
@TestDescription("없는 사용자의 경우 UsernameNotFoundException 예외 발생")
public void findByUsernameFail() {
String username = "random@email.com";
accountService.loadUserByUsername(username);
}
2. try-catch
- 예외 타입과 메시지 확인 가능
- 하지만 코드가 다소 복잡
@Test @TestDescription("없는 사용자의 경우 예외 타입과 메세지 확인") public void findByUsernameFail() { String username = "random@email.com"; try { accountService.loadUserByUsername(username); fail("supposed to be failed"); } catch (UsernameNotFoundException e) { assertThat(e.getMessage()).containsSequence(username); } }
3. @Rule
ExpectedException
- 코드는 간결하면서 예외 타입과 메시지 모두 확인 가능
- Expected 라서 예상되는 예외를 먼저 작성해줘야 함
AccountServiceTest 에 @Rule
설정
...
import org.hamcrest.Matchers;
import org.junit.Rule;
import org.junit.rules.ExpectedException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import static org.assertj.core.api.Assertions.fail;
public class AccountServiceTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
...
expectedException 객체를 사용해서 예외처리
@Test
@TestDescription("없는 사용자의 경우 예상되는 예외로 타입과 메세지 확인")
public void findByUsernameFail() {
// Expected
String username = "random@email.com";
expectedException.expect(UsernameNotFoundException.class);
expectedException.expectMessage(Matchers.containsString(username));
// When
accountService.loadUserByUsername(username);
}
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 기반 REST API 개발] 5-5. 스프링 시큐리티 폼 인증 설정 (0) | 2020.04.05 |
---|---|
[스프링 기반 REST API 개발] 5-4. 스프링 시큐리티 기본 설정 (0) | 2020.04.04 |
[스프링 기반 REST API 개발] 5-2. 스프링 시큐리티 적용 (0) | 2020.04.02 |
[스프링 기반 REST API 개발] 5-1. Account 도메인 추가 (0) | 2020.04.01 |
[스프링 기반 REST API 개발] 4-4. 테스트 코드 리팩토링 (0) | 2020.03.31 |
댓글