์๋ก
JUnit5์ผ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ค์ JUnit4์ Exception์ ์์ธ์ฒ๋ฆฌ ๊ณผ์ ์ด ๋ค๋ฅธ ์ ์ด ์์ด์ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ฐ๋จํ ์ค๋ณต ํ์์ธ์ง๋ฅผ ๊ฒ์ฆํ๋ ์๋ ๋ฉ์๋๋ก ํ ์คํธ๋ฅผ ์งํํด ๋ณด๊ฒ ์ต๋๋ค.
private void validateDuplicateMember(Member member) {
List<Member> findMembers = memberRepository.findByName(member.getName());
if (!findMembers.isEmpty()) {
throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
}
}
์ ์ฝ๋๋ ์ค๋ณต ํ์์ผ ๋์ IllegalStateException ์์ธ๋ฅผ ๋์ ธ์ค๋๋ค.
1. JUnit4์์์ Exception ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋๋ค.
@Test(expected = IllegalStateException.class)
public void ์ค๋ณต_ํ์_์์ธ() throws Exception {
Member member1 = new Member();
member1.setName("์์ฃผํ");
Member member2 = new Member();
member2.setName("์์ฃผํ");
}โ
์ ์ผ ์๋จ์ @Test annotation์ expected ์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ ์์ธ๊ฐ ํฐ์ง๋ค๊ณ ์์ํ๊ณ ์ ์ธํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ ์คํธ๊ฐ ์คํ๋ ๋ ์ง์ ๋ ์์ธ๊ฐ throw ๋์ง ์์ผ๋ฉด ํ ์คํธ๊ฐ ์คํจํ๊ณ throw ๋๋ฉด ํต๊ณผํฉ๋๋ค.
2. JUnit5์์์ Exception ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋๋ค.
JUnit5 ํ๊ฒฝ์์๋ ์์๊ฐ์ด expected ์์ฑ์ ์ฌ์ฉํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋นจ๊ฐ์์ผ๋ก ๋จ๋ฉด์ ์์ฑ ์์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด ์ ์ ์์ต๋๋ค.
JUnit5์์๋ assertThrows ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์๋๋ ์์ธ์ ์ ํ๊ณผ ๋๋ค ์์ ํตํด ํ ์คํธ ์ค์ธ ์ฝ๋๋ฅผ ์ ๋ฌํ ์ ์๋ ์คํ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
@Test
public void ์ค๋ณต_ํ์_์์ธ() throws Exception {
//given
Member member1 = new Member();
member1.setName("์์ฃผํ");
Member member2 = new Member();
member2.setName("์์ฃผํ");
memberService.join(member1);
Assertions.assertThrows(IllegalStateException.class, () -> {
memberService.join(member2);
});
}
๊ฒฐ๋ก
- JUnit4: @Test annotation expected ์์ฑ์ ์ฌ์ฉํ์ฌ ์์ธ ๊ฐ ์ง์ ๊ฐ๋ฅ.
- JUnit5: JUnit4 ๋ฐฉ๋ฒ์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ, assertThrows๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์๋๋ ์์ธ์ ์ ํ๊ณผ ๋๋ค ์์ ํตํด ํ ์คํธ ์ค์ธ ์ฝ๋๋ฅผ ์ ๋ฌํ ์ ์๋ ์คํ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ.
assertThrows() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ํน์ ๋ถ๋ถ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ธ ์ฃผ์ฅ ๋ ผ๋ฆฌ๋ฅผ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋์๋ค๊ณ ํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ: https://www.baeldung.com/junit-assert-exception
'BackEnd๐ฑ > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๊ฐ์ฒด๋ณต์ฌ BeanUtils.copyProperties (0) | 2022.05.15 |
---|---|
[Spring] properties encoding ํ๊ธฐ(๊ตญ์ ํ ํ๊ธ๊นจ์ง) (0) | 2022.04.27 |
[Spring] DAO์ DTO์ ์ฐจ์ด ๊ทธ๋ฆฌ๊ณ VO (0) | 2022.04.14 |
[Spring] @NoArgsConstructor, @RequiredArgsConstructor, @RequiredArgsConstructor (0) | 2022.03.30 |
[Spring] @RequestParam, @RequestBody, @ModelAttribute์ ์ฐจ์ด (1) | 2022.03.28 |
[Spring] logging ์ ๋ํด ์์๋ณด์ (1) | 2022.03.21 |
๋๊ธ