반응형
간혹 테스트코드를 작성할 때, 예외를 띄우는 것을 기대하는 경우가 있을 것이다.
그런 경우는 아래와 같이 작성하면 된다.
@Test
void notFoundMessageCode(){
Assertions.assertThatThrownBy(()-> messageSource.getMessage("no_code", null, null))
.isInstanceOf(NoSuchMessageException.class);
}
- assertThatThrownBy : 예외가 throw됐을 경우 그 예외를 catch해주는 기능을 가진다.
위 코드에선, no_code라는 메시지가 저장돼있지 않아 람다식에서 NoSuchMessageException 에러를 throw해주었으며, 따라서 isInstanceOf에서 예상한 에러 종류와 일치하므로 Test가 Pass한다.
주의할 점
아래와 같이 작성하면 안된다.
@Test
void notFoundMessageCode(){
Assertions.assertThatThrownBy(messageSource.getMessage("no_code", null, null))
.isInstanceOf(NoSuchMessageException.class);
}
assertThatThrownBy 안에는 람다식이 들어가야 한다.
어차피 저 과정 속에서 exception이 발생하는데 상관없는거 아니냐고 할 수 있는데, 컴파일러 입장에선 에러인지 아닌지 런타임 전엔 알 수가 없어 String형이라 생각해 빨간줄을 띄워준다.
반응형
'JAVA > JAVA | Spring 학습기록' 카테고리의 다른 글
[Spring+React] 스프링과 리액트 연동해보기 (IntelliJ + Spring + Gradle + React) (2) | 2021.11.15 |
---|---|
[211004] [일기] 프로젝트를 위한 스프링 검증파트 공부중... (0) | 2021.10.04 |
[Java] 자바 final의 역할과 싱글톤 패턴 (0) | 2021.09.22 |
[SQL][TDD] ERROR 1146 (42S02): Table doesn't exist 해결 (0) | 2021.08.29 |
[TDD] @Rollback을 쓰면 원래 DB의 데이터도 사라질까? (0) | 2021.08.27 |