2.1 @Mock ์ฃผ์
Mockito์์ ๋ชฉ ๊ฐ์ฒด๋ก ์์ ํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์์ ํ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ์ด๊ณ ๋ ๋ฒ์งธ๋ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๋ํผ๋ก ๋ํํ๋ ๊ฒ์ ๋๋ค. ์ฒซ ๋ฒ์งธ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค.
์์ ํ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
ClassName variable name = Mockito.mock(ClassName.class);
์๋ฅผ ๋ค์ด ๋ชจ์ ArrayList ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
@ExtendWith(MockitoExtension.class)
class MockTest {
@Test
public void whenNotUseMockAnnotation_thenCorrect() {
List mockList = Mockito.mock(ArrayList.class);
//these methods won't do anything - they are stubs
mockList.add("one");
mockList.add("two");
}
}
์ด ์์ ์์๋ ๊ฐ์ง ArrayList๋ฅผ ๋ง๋ค๊ณ mockList ๋ณ์์ ์ฐธ์กฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด ๊ฐ์ฒด์ ๋ฉ์๋๋ ์๋ฌด ์์ ๋ ์ํํ์ง ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด ์ฝ๋๋ ์ด๊ฒ์ ๋ํ ํน๋ณํ ์ฃผ์์ด ์๊ธฐ ๋๋ฌธ์ ๋ ์งง๊ฒ ์์ฑํ ์ ์์ต๋๋ค @Mock
.
@ExtendWith(MockitoExtension.class)
class MockTest {
@Mock
List mockList;
@Test
public void whenNotUseMockAnnotation_thenCorrect() {
//these methods won't do anything - they are stubs
mockList.add("one");
mockList.add("two");
}
}
๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ MockitoExtension
ํด๋์ค ์ฝ๋ ์์ฒด๋ฅผ ๋ถ์ํ๊ณ ํ์ํ ์คํ
์ ์์ฑํฉ๋๋ค. ๋ฉ์๋๋ฅผ ํธ์ถํ ํ์๊ฐ ์์ต๋๋ค Mockito.mock()
. ํ๋์ ์ฃผ์๊ณผ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ค๋น๋์์ต๋๋ค. ์๋ฆ๋ค์.
2.2 @Spy ์ฃผ์
Mockito์์ ๋ ๋ฒ์งธ๋ก ์ค์ํ ๊ฐ์ฒด ์ ํ์ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ํ ๋ํผ์ ๋๋ค. ํํธ์ผ๋ก๋ ๊ธฐ์กด ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ณ ๋ค๋ฅธ ํํธ์ผ๋ก๋ ์ด๋ฌํ ๊ฐ์ฒด์ ๋ชจ๋ ๋ฉ์๋ ๋ฐ ๋ณ์์ ๋ํ ํธ์ถ์ ๊ฐ๋ก์ฑ์ ํ์ํ ๊ฒฝ์ฐ ์์ ์ ์์ ํ ์ ์์ต๋๋ค. Mock ๊ฐ์ฒด๋งํผ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ์ฒด์ ๋ํ ๋ํผ๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
ClassName variable name = Mockito.spy(an object);
ArrayList ํด๋์ค ์ฃผ์์ ๋ํผ๊ฐ ์๋ ์:
@ExtendWith(MockitoExtension.class)
class SpyTest {
@Test
public void whenMockAnnotation() {
List<String> mockList = Mockito.spy(new ArrayList<String>());
//these methods will work!
mockList.add("one");
mockList.add("two");
}
}
๊ฐ์ฅ ๊ฐ๋จํ ํํ๋ก ๋ํผ ๊ฐ์ฒด์ ๋ํ ํธ์ถ์ ์๋ ๊ฐ์ฒด์ ๋ํ ํธ์ถ์ ๋ฆฌ๋๋ ์ ํ๋ ๊ฒ์ ๋๋ค. ์ด ์ฐธ์กฐ๋ ๋ด๋ถ์ ์ ์ง๋ฉ๋๋ค . ๋ชจ๋ ๊ฒ์ด ์๋ณธ ๊ฐ์ฒด์ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
- ์ฃผ์์ ์ฌ์ฉํ์ฌ ๋ํผ๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค @Spy
.
@ExtendWith(MockitoExtension.class)
class SpyTest {
@Spy
List mockList = new ArrayList<String>();
@Test
public void whenMockAnnotation() {
// these methods will work!
mockList.add("one");
mockList.add("two");
}
}
์ด ๋ ์ฝ๋ ์์ ๋ ๋์ผํฉ๋๋ค.
GO TO FULL VERSION