티스토리 뷰
1. 단위 테스트 작성에 편리한 패턴(given, when, then 패턴)
테스트할 준비를 하고(given), 테스트할 대상을 실행하고(when), 검증(then)하는 패턴은 BDD(Behavior Driven Development)에서 나온 패턴임
@Test
public void plus_mockito(){
// given
Random random = mock(Random.class);
when(random.nextInt()).
thenReturn(3);
RandomCalculator randomCalculator = new RandomCalculator(random, new Calculator());
// when
int result = randomCalculator.plus(2, 5);
// then
assertThat(result, is(10));
}
2. Mockito에서 mock객체를 쉽게 생성하고 주입하는 방법
@RunWith(MockitoJUnitRunner.class)
public class UserServiceMockitoTest {
/**
* @Mock을 이용하면 mock(UserDAO.class); 와 같은 코드를 호출하지 않아도 되고,
* MockitoJUnitRunner.class에 의해 자동으로 목 객체가 생성된다.
*
**/
@Mock
private UserDAO userDAO;
@InjectMocks
private UserService userService = new UserService();
@Before
public void init() {
when(userDAO.getUser("kyu")).thenAnswer(new Answer<AdminUser>() {
@Override
public AdminUser answer(InvocationOnMock invocation) throws Throwable {
AdminUser adminUser = new AdminUser();
adminUser.setUserName("namkyu");
adminUser.setAge(32);
return adminUser;
}
});
when(userDAO.getUserCnt()).thenReturn(10);
}
@Test
public void annotationMockTest() {
AdminUser adminUser = userService.getUser("kyu");
assertThat("namkyu", is(adminUser.getUserName()));
assertThat(32, is(adminUser.getAge()));
assertThat(10, is(userDAO.getUserCnt()));
}
}
'TDD' 카테고리의 다른 글
[TDD] spring mvc file uplad 테스트 (0) | 2019.12.11 |
---|---|
Spring MVC 단위테스트 (0) | 2019.07.04 |
Mockito 사용법 (0) | 2019.07.04 |
JUnit 사용법 (0) | 2019.07.04 |
JUnit Test에서 application context 로딩 (0) | 2019.07.04 |