728x90
반응형
Junit4 환경에서 찍은 강의를 보면서 @Test어노테이션에 해당 테스트의 Exception을 미리 처리하는 옵션을 줘서 처리하는 코드를 봤다. 하지만 나는 Junit5 환경이기 때문에 @Test(expected - ~)옵션이 없어져서 같은 코드를 사용하지 못한다. try catch로 하면 코드가 지저분해져서 expected옵션처럼 깔끔하게 처리하고 싶어서 찾아봤다.
처음 내가 Exception을 처리하고 싶었던 코드는 아래와 같다.
try부분에서 Exception이 터지면 catch에서 걸러지고 return해서 테스트가 성공한다. fail()은 만약 return 되지 않고 fail()코드가 실행되면 테스트가 실패하는 함수이다.
@Test
public void 중복예외() throws Exception {
//given
Member member1 = new Member();
member1.setName("kim1");
Member member2 = new Member();
member2.setName("kim1");
//when
memberService.join(member1);
try {
memberService.join(member2);
} catch (IllegalStateException e) {
return ;
}
//then
fail("예외가 발생해야 한다.");
}
Junit4환경에서 @Test(expected = ~)를 사용한 코드는 아래와 같다.
@Test(expected = IllegalStateException.class)
public void 중복예외() throws Exception {
//given
Member member1 = new Member();
member1.setName("kim1");
Member member2 = new Member();
member2.setName("kim1");
//when
memberService.join(member1);
memberService.join(member2);
}
위의 코드는 Junit4에서만 사용할 수 있는 코드이기 때문에 오류가 난다.
Junit5에서 깔끔하게 테스트할 수 있도록 도와주는 Assertions.assertThrows를 사용하면 된다! 문법은 아래와 같다.
assertThrows(exception이름.class, ()->{/*오류가 발생할 로직*/});
그래서 assertThrows를 적용하면
@Test
public void 중복예외() throws Exception {
//given
Member member1 = new Member();
member1.setName("kim1");
Member member2 = new Member();
member2.setName("kim1");
//when
memberService.join(member1);
//then
assertThrows(IllegalStateException.class, () -> memberService.join(member1));
}
훨씬 깰꼼해졌다!!
스스로 찾아보고 공부 한 내용을 기록하는 개인 공부 블로그입니다.
내용 중 틀린 부분이나 궁금한 내용은 언제든지 댓글로 남겨주세요🧐
728x90
반응형
'Backend > Spring' 카테고리의 다른 글
[Spring] 스프링 빈 생명주기 (0) | 2024.01.10 |
---|---|
[Spring] 스프링 빈 중복조회 해결 방법 (1) | 2023.12.29 |
[Spring/Error][해결] 스프링 리액트 통합 빌드 - Unable to access jarfile (0) | 2023.12.25 |
[Spring/Error][해결] Spring-React 통합 빌드 오류 - An input file was expected to be present but it doesn't exist. (0) | 2023.12.25 |
[Spring/Error][해결] VSCode jdk 버전 업그레이드하기 (0) | 2023.12.25 |