Mockito Void Method 테스트 방법
Mockito 프레임워크에서 사용되는 Mockito Verify , Mockito When/Then 및 Mockito의 Mock Methods )와 함께 사용한다.
Test 코드를 작성하다가, Mocking을 하고 Mocking한 method가 void 일때 Mocking이 안되는 경우를 보았을것이다.
Mockito를 사용해서 Void 메소드를 실행, 또는 exception을 Throw 할 수 있다.
일반적으로 mocking하는 것과 크게 다르지 않다.
how?
- Mockito.doNothing()
모킹할 클래스 클래스 = mock(모킹할 클래스.class);
Mockito.doNothing()
.when(모킹할 클래스)
.사용할메소드(매개변수) // 매개변수는 줘도되고 안줘도 된다.
verify(모킹한 클래스).사용할메소드(매개변수);
- Mockito.doThrow()
모킹할 클래스 클래스 = mock(모킹할 클래스.class);
Mockito.doThrow(예외.class)
.when(모킹한 클래스)
.사용할 메소드(매개변수) // 매개변수는 줘도되고 안줘도 된다.
verify(모킹한 클래스).사용한메소드(매개변수)
예제 자바 코드
1. 메소드 실행 테스트
public class MockTest {
static class TestClass {
public void print(int value) {
System.out.println(value);
}
}
@Test
void voidMethodTest() {
TestClass mockTestClass = mock(TestClass.class);
int value = 10;
doNothing().when(mockTestClass)
.print(value);
mockTestClass.print(value);
verify(mockTestClass)
.print(value);
}
}
2. 메소드 실행시 예외 테스트
public class MockTest {
static class TestClass {
public void print(int value) {
if (value == 10) {
throw new IllegalArgumentException();
}
System.out.println(value);
}
}
@Test
void voidMethodThrowsTest() {
TestClass mockTestClass = mock(TestClass.class);
int value = 10;
doThrow(IllegalArgumentException.class).when(mockTestClass)
.print(value);
assertThrows(IllegalArgumentException.class, () -> mockTestClass.print(value));
verify(mockTestClass)
.print(value);
}
}
참조
'테스트' 카테고리의 다른 글
JaCoCo (0) | 2023.01.05 |
---|---|
코드 커버리지(Code coverage) (0) | 2023.01.05 |
Java Static Method Mocking Test - 자바 스태틱 메소드 테스트 (0) | 2022.11.18 |
Hamcrest (In Java JUnit5) (0) | 2022.11.13 |
무엇을 테스트 할것인가? 어떻게 테스트 할것인가 - 권용근님 (0) | 2022.11.10 |