JEP's Diary

Android Unit Tests(단위 테스트) - Local Unit Tests 본문

Development/Android

Android Unit Tests(단위 테스트) - Local Unit Tests

지으니88 2016. 3. 15. 00:08

Android Unit Tests(단위 테스트) - Local Unit Tests


Android에서 동작하는 앱을 위한 Unit Testing에는 두 가지 종류가 있다.

Local Unit Tests : Android 프레임워크와는 별개로 동작하는 것들을 테스트. 이 테스트는 시험시간을 최소화하기 위해 JVM에서 로컬로 실행하도록 컴파일된다.

Instrumented Unit Tests : Android 프레임워크과 연관되어 동작하는 것들을 테스트. 이 테스트는 안드로이드 디바이스 또는 에뮬레이터에서 동작한다.

(Android Studio 1.5.1)


1. 테스트 과정

1.1 테스트 환경 설정

build.gradle 파일을 열어 3가지 라이브러리를 추가합니다.

1
2
3
4
5
6
7
dependencies {
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:1.10.19'
    testCompile 'org.hamcrest:hamcrest-library:1.3'
 
    compile 'com.android.support:appcompat-v7:23.1.1'
}
cs


JUnit : Unit Testing Framework (필수)

Mockito : Mock Object 구현을 도와주는 라이브러리

Hamcrest : Test Class 에서 사용하는 assert()와 같은 Matcher를 확장한 Library


1.2 Test Code  디렉토리 확인

Local Unit Test의 디렉토리는 src/test/java 이다.

해당 패키지가 없다면 New >  Directory를 통해 새로 생성해준다.


1.3 Test Artifact 설정

AndroidStudio에서 Unit Testing를 진행할 Test의 유형을 Test Artifact라고 부른다. 어떤 유형의 Unit Test를 실행 할 것인지 설정한다.

좌측 하단의 Build Variants를 클릭한다.

그리고 Test Artifact에서 Unit Tests를 선택한다.



1.4 Test Class 생성 및 Test 실행

Test를 실행할 간단한 소스 코드를 작성한다.

New > Java Class > Calculator.java 생성


1
2
3
4
5
6
7
8
9
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
 
    public int sub(int a, int b) {
        return a - b;
    }
}
cs


해당 소스코드에서 마우스 우측 버튼 > Go to > Test를 클릭하면 Test Code 파일이 자동으로 생성된다.



Create New Test 선택



JUnit4 선택하여 테스팅 할것이므로 JUnit4 선택.

setUp, teatDown 함수는 각각 테스트 하기 전 후에 호출 되는 함수 이므로 체크.

테스트할 메서드 add, sub 체크.



이렇게 하면 Test Code 파일이 자동으로 생성된다.

생성된 파일에 테스트 코드를 입력한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class CalculatorTest {
 
    private Calculator calculator;
 
    @Before
    public void setUp() throws Exception {
        calculator = new Calculator();
    }
 
    @After
    public void tearDown() throws Exception {
 
    }
 
    @Test
    public void testAdd() throws Exception {
        assertEquals(3, calculator.add(12));
    }
 
    @Test
    public void testSub() throws Exception {
        assertEquals(-1, calculator.sub(1,2));
    }
}
cs


assertEquals(기대되는 값, 실제 값)


마우스 우클릭 > Run 'Calculate Test'를 클릭하여 테스트를 실행한다.

테스트가 통과 되었는지 실패되었는지 결과를 확인한다.






2. 코드 커버리지 (JaCoCo)

코드 커버리지는 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표 중 하나다. 말 그대로 코드가 얼마나 커버되었는가이다.

소프트웨어 테스트를 진행 했을 때 코드 자체가 얼마나 실행되었느냐 이다.

AndroidStuio 1.5.1 에서는 코드 커버리지  JaCoCo를 사용할 수 있다.


2.1 JaCoCo 설정 및 실행

Run > Edit Configuration > Code Coverage 탭을 선택한다.



Code Coverage 탭에서 JaCoCo를 선택한다.



코드 커버리지를 실행한다.

마우스 우클릭 > Run 'CalculatorTest' With Coverage 선택.



커버리지에 대한 결과이다.

테스트할 add, sub메서드를 모두 테스트했으므로 100%의 결과가 나온다.

add, sub 메서드 중 하나만 테스트 하면 이 수치가 달라진다.



testSub() 안에 있는 sub 메서드에 대한 테스트를 주석 처리 후 다시 코드 커버리지를 실행하면,

아래와 같이 Calculator 부분의 Method 퍼센테이지에 50%라고 출력되는 결과를 볼 수 있다.

또한 Calculator.java 파일을 보면 테스트 한 메서드는 초록색, 테스트를 하지 않은 메서드는 빨간색으로 표시된다.




'Development > Android' 카테고리의 다른 글

ViewPager2  (0) 2021.01.06
Android ViewModel  (0) 2018.08.08
Android 6.0 마시멜로 대응(런타임 권한 모델)  (0) 2016.03.14
Realm 모바일 데이터 베이스(Android)  (0) 2016.03.13
안드로이드 샘플 불러오기  (0) 2015.11.25