[Android, Mockito] Unit Test using Mockito
안녕하세요. 블랙진입니다.
안드로이드 테스트 코드에 관한 포스팅을 진행하고 있는 중입니다.
이전 UnitTest, UiTest 기본 에서는 UnitTest 에서 Junit 사용법에 대해 알아봤습니다. 이번에는 UnitTest 에서 mockito 를 사용한 방법에 대해 사용법 위주로 포스팅을 해보겠습니다.
mockito 란?
mockito는 유닛 테스트를 위한 자바 프레임워크 입니다.
이에 관한 자세한 예제는 깃허브 문서에서 확인해주세요.
1. app 단계의 Build.gradle
// Mockito framework
testImplementation 'org.mockito:mockito-core:2.22.0'
Mockito 라이브러리를 구현해 줍니다.
2. Person.class 를 생성해줍니다.
public class Person {
private String name;
private int age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
이 Person 클래스의 데이터를 가지고 테스트 코드를 작성할 예정입니다.
3. src/test/java 폴더 아래에 PersonTest 파일을 생성해 줍니다.
이전 포스팅에서 UnitTest 는 test 폴더에 UiTest androidTest 폴더에서 해준다고 했죠?
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class PersonTest {
@Test
public void test() {
Person p = mock(Person.class);
assertTrue( p != null);
when(p.getName()).thenReturn("BlackJin");
when(p.getAge()).thenReturn(27);
assertTrue("BlackJin".equals(p.getName()));
assertTrue(27 == p.getAge());
}
}
위 코드는 mockito usage 에서 발취 해 온 일부 예제 입니다.
설명은 주석으로 대신하겠습니다.
public class PersonTest {
@Test
public void test() {
//mock 을 통해 Person 객체를 생성해줍니다.
Person p = mock(Person.class);
//p 객체가 존재하는지 확인합니다.
assertTrue( p != null);
//when 함수를 통애 p 객체의 getName, getAga 반환값을 정해줍니다.
when(p.getName()).thenReturn("BlackJin");
when(p.getAge()).thenReturn(27);
//p 의 반환 값이 기대값과 같은지 확인 합니다.
assertTrue("BlackJin".equals(p.getName()));
assertTrue(27 == p.getAge());
}
}
Mockito 를 통해 객체의 반환값을 임의로 정해 UnitTest 를 실행할 수 있습니다. 객체에 데이터를 추가하는 다양한 기능 및 검증을 할 수 있는 함수가 많이 있습니다. 이는 공식 문서를 보면서 하나하나씩 공부하고 적용해 나가면 될 것 같습니다. (아직도 공부할게 정말 많네요 ㅠㅜ)