정상에서 IT를 외치다

[Android, Mockito] Unit Test using Mockito 본문

안드로이드

[Android, Mockito] Unit Test using Mockito

Black-Jin 2018. 10. 5. 15:56
반응형


안녕하세요. 블랙진입니다.


안드로이드 테스트 코드에 관한 포스팅을 진행하고 있는 중입니다.

이전 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 를 실행할 수 있습니다. 객체에 데이터를 추가하는 다양한 기능 및 검증을 할 수 있는 함수가 많이 있습니다. 이는 공식 문서를 보면서 하나하나씩 공부하고 적용해 나가면 될 것 같습니다. (아직도 공부할게 정말 많네요 ㅠㅜ)

반응형
Comments