티스토리 뷰
안드로이드 스튜디오 단위 테스트(Unit Test) 작성 및 실행하는 방법
안드로이드 앱 개발 과정에서 단위 테스트(Unit Test)는 코드의 정확성을 검증하고, 버그를 조기에 발견하며, 유지보수를 용이하게 만드는 중요한 단계입니다. 이 글에서는 안드로이드 스튜디오를 사용하여 단위 테스트를 작성하고 실행하는 방법을 단계별로 설명합니다.
👇👇👇 내용 자세히보기 👇👇👇
단위 테스트란 무엇인가?
단위 테스트는 소프트웨어의 가장 작은 단위(함수, 메서드, 클래스 등)를 독립적으로 검증하는 테스트 방법입니다. 이를 통해 코드가 의도한 대로 작동하는지 확인할 수 있습니다. 주요 목적은 다음과 같습니다:
- 코드의 정확성 검증: 입력값에 대한 예상 결과를 확인.
- 버그 조기 발견: 코드의 작은 부분에서 발생할 수 있는 예외 상황 탐지.
- 유지보수성 향상: 코드 모듈화를 통해 결합도를 낮추고 유연성을 높임.
안드로이드 스튜디오에서 단위 테스트 준비하기
1. Testing Support Library 설정
안드로이드 스튜디오는 다양한 테스트 툴과 라이브러리를 지원합니다. 아래는 대표적인 라이브러리입니다:
- JUnit4: 기본적인 단위 테스트 프레임워크.
- Espresso: UI 테스트를 위한 프레임워크.
- Mockito: Mock 객체를 활용한 테스트 지원.
테스트를 시작하려면 build.gradle
파일에 필요한 의존성을 추가해야 합니다.
dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
testImplementation
은 로컬 단위 테스트용이고, androidTestImplementation
은 기기나 에뮬레이터에서 실행되는 계측 테스트용입니다.
단위 테스트 작성하기
1. JUnit을 활용한 간단한 예제
JUnit은 안드로이드에서 가장 널리 사용되는 단위 테스트 프레임워크입니다. 아래는 숫자 덧셈을 테스트하는 간단한 예제입니다.
Adder.java
package com.example.testing;
public class Adder {
public int add(int a, int b) {
return a + b;
}
}
AdderTest.java
package com.example.testing;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class AdderTest {
@Test
public void addition_isCorrect() {
Adder adder = new Adder();
assertEquals(5, adder.add(2, 3));
}
}
2. Android Activity와 관련된 테스트
Activity와 관련된 코드는 UI 요소와 상호작용하기 때문에 일반적으로 계측 테스트(Android Instrumentation Test)를 사용합니다.
MainActivityTest.java
package com.example.testing;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.rule.ActivityTestRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertNotNull;
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void activity_isNotNull() {
MainActivity activity = activityRule.getActivity();
assertNotNull(activity);
}
}
테스트 실행하기
1. 안드로이드 스튜디오에서 실행
Run > Edit Configurations
메뉴에서 새로운 Android Test 설정을 만듭니다.Module
에 앱 모듈을 선택하고,Class
에 테스트할 클래스를 지정합니다.- 설정 후 상단의 실행 버튼을 클릭하여 테스트를 수행합니다.
2. Gradle 명령어 사용
Gradle을 이용해 터미널에서 테스트를 실행할 수도 있습니다.
./gradlew test // 로컬 단위 테스트 실행
./gradlew connectedAndroidTest // 계측 테스트 실행
좋은 단위 테스트 작성 원칙
- 집중(Focused): 하나의 메서드나 클래스에만 초점을 맞추어야 합니다.
- 독립성(Independent): 각 테스트는 서로 독립적으로 동작해야 합니다.
- 확정성(Deterministic): 동일한 조건에서 항상 같은 결과를 반환해야 합니다.
- 이해 가능성(Understandable): 코드가 간결하고 의도가 명확해야 합니다.
자주 묻는 질문
Q1: JUnit과 Espresso의 차이점은 무엇인가요?
A1: JUnit은 로직 검증과 같은 로컬 단위 테스트에 적합하며, Espresso는 UI 요소와 상호작용하는 계측 테스트에 적합합니다.
Q2: Gradle 설정 후에도 테스트가 동작하지 않아요.
A2: testInstrumentationRunner
설정이 누락되었을 가능성이 있습니다. defaultConfig
에 아래 내용을 추가하세요:
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Q3: Mock 객체는 언제 사용하나요?
A3: 외부 종속성(DB, 네트워크 등)이 있는 경우 이를 대체하여 독립적인 환경에서 코드를 검증할 때 사용합니다.
결론
안드로이드 스튜디오에서 단위 테스트를 작성하고 실행하는 과정은 처음에는 복잡하게 느껴질 수 있지만, 프로젝트 규모가 커질수록 그 중요성이 커집니다. JUnit과 같은 기본 프레임워크부터 시작하여 Espresso나 Mockito와 같은 고급 도구를 활용하면 더욱 강력한 테스트 환경을 구축할 수 있습니다. 꾸준한 연습과 올바른 설정으로 효율적인 개발 프로세스를 만들어 보세요.