티스토리 뷰

TDD

Mockito 사용법2

skydev 2019. 7. 4. 12:25

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()));
	}
}

 

 

출처: https://softarchitecture.tistory.com/64

https://multifrontgarden.tistory.com/187

'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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함