티스토리 뷰

안드로이드 스튜디오 단위 테스트(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 // 계측 테스트 실행

좋은 단위 테스트 작성 원칙

  1. 집중(Focused): 하나의 메서드나 클래스에만 초점을 맞추어야 합니다.
  2. 독립성(Independent): 각 테스트는 서로 독립적으로 동작해야 합니다.
  3. 확정성(Deterministic): 동일한 조건에서 항상 같은 결과를 반환해야 합니다.
  4. 이해 가능성(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와 같은 고급 도구를 활용하면 더욱 강력한 테스트 환경을 구축할 수 있습니다. 꾸준한 연습과 올바른 설정으로 효율적인 개발 프로세스를 만들어 보세요.

반응형