반응형
JUnit을 이용하여 유닛 테스트를 하다 보면 예외를 테스트 해야 하는 경우가 있다.
아래 코드를 통해 바로 확인해보자.
아래 코드는 div라는 메서드를 이용하여 2 / 2를 하는데 expected는 0이었으나 실제 계산된 값은 1이므로 테스트 결과가같지 않아 fail이 나는 상태이다.
package com.example.customnotepad;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
public class JUnitTest {
@Test
public void test() {
int ret = div(2,2);
assertThat(0, is(ret));
}
private int div(int a, int b){
return a / b;
}
}
이번엔 아래 코드를 보자.
0으로 나누는 행위를 취하니 AritArithmeticException 이 발생했다.
이처럼 의도적으로 exception을 발생시키는 테스트를 해야하는 경우 이를 test pass로 만들기 위해서는 마지막 코드를 통해 확인해보자.
package com.example.customnotepad;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
public class JUnitTest {
@Test
public void test() {
int ret = div(2,0);
assertThat(0, is(ret));
}
private int div(int a, int b){
return a / b;
}
}
@Test(expected = ExceptionName.class) 를 통해 해당 예외는 이미 예측된 것이고 패스로 가정 할 수 있도록 만들 수 있다.
package com.example.customnotepad;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
public class JUnitTest {
@Test(expected = ArithmeticException.class)
public void test() {
int ret = div(2,0);
assertThat(0, is(ret));
}
private int div(int a, int b){
return a / b;
}
}
반응형
'Applied > Unit Test' 카테고리의 다른 글
[Robolectric] robolectric shadow bitmap 관련 참고 코드 (0) | 2020.04.21 |
---|---|
[Robolectric] Robolectric을 이용한 Parameterized testing (0) | 2020.04.17 |
[JUnit] private 메서드, 변수 테스트 방법 (1) | 2020.02.29 |
[JUnit] hamcrest를 이용한 test code 만들기 (0) | 2020.02.08 |
[JUnit] Suite annotation을 이용한 집합 테스트 (0) | 2020.02.07 |