IT/Android (안드로이드)

Android N.4-3 Testing: Basics

Edmond Na 2025. 4. 21. 23:31

2021.4.10 작성

참고 - https://black-jin0427.tistory.com/107

#0 안드로이드 앱 테스트

앱 테스트는 앱 개발 과정에서 핵심적인 부분입니다. 앱 테스트를 일관되게 실행하여 앱을 공개적으로 출시하기 전에 앱의 정확성, 기능 동작 및 사용성을 확인할 수 있습니다.

테스트는 다음과 같은 장점을 제공합니다.

  • 장애에 관한 신속한 피드백
  • 개발 주기에서 조기 장애 감지
  • 회귀에 신경 쓸 필요 없이 코드를 최적화할 수 있도록 하는 더 안전한 코드 리팩터링
  • 기술적 문제를 최소화하는 안정적인 개발 속도

#1 테스트 유형 및 위치

테스트 코드의 위치는 작성하는 테스트의 유형에 따라 결정됩니다. Android 스튜디오에서는 다음과 같은 두 가지 테스트 유형을 지원하는 소스 코드 디렉터리(소스 세트)를 제공합니다.

로컬 단위 테스트

위치: module-name/src/test/java/

컴퓨터의 로컬 JVM(Java Virtual Machine)에서 실행되는 테스트입니다. 테스트에 Android 프레임워크 종속 항목이 없거나 Android 프레임워크 종속 항목을 모의 구현할 수 있는 경우 이 테스트를 사용하면 실행 시간을 최소화할 수 있습니다.

런타임에 이 테스트는 모든 android.jar 한정자가 삭제된, 수정된 final 버전에 실행됩니다. 여기서는 Mockito와 같이 흔히 사용되는 모의 라이브러리를 사용할 수 있습니다.

계측 테스트

위치: module-name/src/androidTest/java/

하드웨어 기기나 에뮬레이터에서 실행되는 테스트입니다. 이 테스트는 Instrumentation API에 액세스할 수 있으며 테스트하는 앱의 정보(예: Context)에 액세스할 권한을 개발자에게 제공합니다. 이 테스트에서 개발자는 테스트 대상 앱을 테스트 코드에서 제어할 수 있습니다. 사용자 상호작용을 자동화하는 통합 및 기능적 UI 테스트를 작성하거나, 테스트에 모의 객체가 충족할 수 없는 Android 종속 항목이 있는 경우 이 테스트를 사용합니다.

#2 테스트 기본 사용법

  1. test implmentation 주석 아래 3가지 implementation이 테스트를 위해 필요한 라이브러리 입니다.

    dependencies {  
     // test implementation  
     testImplementation 'junit:junit:4.12'  
     androidTestImplementation 'com.android.support.test:runner:1.0.2'  
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'  
    }
  2. Project 단계에서 Test 파일 확인

enter image description here

  1. ExampleUnitTest

ExampleUnitTest 파일의 모습입니다. 예제파일로 아래와 같이 기본 설정 되어있습니다.

import org.junit.Test  

import org.junit.Assert.*  

class ExampleUnitTest {  
    @Test  
    fun addition_isCorrect() {  
        assertEquals(4, 2 + 2)  
    }  
}

ExampleUnitTest 파일의 assertEquals 는 기대값이 4 이고 결과값 2 + 2 인것을 의미합니다.

그럼 이 테스트 파일을 실행 해보면 ok 결과가 나오게 됩니다.

static public void assertEquals(long expected, long actual) {  
    assertEquals(null, expected, actual);  
}
  1. 테스트 파일 실행하기

enter image description here

  1. 결과

위에 대한 결과값이 true이니 초록색 바가 나타납니다.