면접 질문 목록으로 가기
면접 질문실전 질문꼬리 질문

안드로이드 단위 테스트 (Unit Testing)

skydovesJaewoong Eum (skydoves)||7분 소요

안드로이드 단위 테스트 (Unit Testing)

단위 테스트(unit test)란 함수, 클래스, 또는 작은 컴포넌트 같은 하나의 "단위(unit)"를 나머지 시스템으로부터 격리하여 정확성을 검증하는 테스트입니다. 안드로이드 개발에서 단위 테스트는 주로 비즈니스 로직, 유틸리티 클래스, 또는 ViewModel의 동작을 안드로이드 프레임워크에 의존하지 않고 검증하는 데 활용됩니다. 단위 테스트는 에뮬레이터나 실제 기기 없이 로컬 JVM에서 빠르게 실행되며, 버그를 조기에 발견하는 데 큰 도움이 됩니다. 면접에서도 단위 테스트에 대한 이해는 코드 품질과 유지보수에 대한 역량을 보여주는 중요한 지표이므로 꼼꼼히 학습하시길 권장합니다.

이번 면접 질문을 통하여 아래 내용들을 학습하실 수 있습니다.

  • 단위 테스트란 무엇이며, 안드로이드 프레임워크로부터 격리하는 것이 왜 중요한지 설명할 수 있습니다.
  • JUnit과 Arrange-Act-Assert 패턴을 활용하여 단위 테스트를 작성할 수 있습니다.
  • 안드로이드 프로젝트에서 단위 테스트 의존성 설정과 디렉터리 구조를 구성할 수 있습니다.
  • 네이밍, 격리, 모킹(mocking)에 대한 모범 사례를 적용할 수 있습니다.
  • 로컬 단위 테스트와 계측 테스트(instrumented test)의 차이를 구분할 수 있습니다.

단위 테스트의 기본 구조

안드로이드에서 단위 테스트는 테스트 프레임워크로 JUnit 4(또는 JUnit 5)를 사용합니다. 각 테스트 함수에는 @Test 어노테이션을 붙이고, 어설션(assertion) 메서드를 통해 기대한 결과가 나오는지 검증합니다. Arrange-Act-Assert(AAA) 패턴은 테스트를 명확하게 구조화하는 표준 접근법입니다.

  1. Arrange(준비): 테스트 데이터와 환경을 설정합니다.
  2. Act(실행): 테스트 대상 동작을 수행합니다.
  3. Assert(검증): 결과가 기대값과 일치하는지 확인합니다.
class Calculator {
    fun add(a: Int, b: Int): Int = a + b
    fun subtract(a: Int, b: Int): Int = a - b
}
import org.junit.Assert.assertEquals
import org.junit.Test

class CalculatorTest {

    private val calculator = Calculator()

    @Test
    fun `adding two numbers returns correct result`() {
        // Arrange: calculator는 이미 초기화됨
        // Act: 두 수를 더함
        val result = calculator.add(2, 3)
        // Assert: 결과가 5인지 검증
        assertEquals(5, result)
    }

    @Test
    fun `subtracting two numbers returns correct result`() {
        val result = calculator.subtract(5, 2)
        assertEquals(3, result)
    }
}

@Test 어노테이션은 해당 함수가 테스트 케이스임을 표시합니다. assertEquals(expected, actual)는 메서드가 올바른 값을 반환하는지 검사하며, 어설션이 실패하면 테스트 러너가 기대값과 실제값을 보고합니다. 이처럼 AAA 패턴을 따르면 테스트의 의도를 한눈에 파악할 수 있어 유지보수에도 유리합니다.

프로젝트 설정

이 면접 질문은 구독자 전용입니다

Dove Letter를 구독하시면 안드로이드, 코틀린 개발 관련 독점 면접 질문의 전체 내용을 볼 수 있습니다.

구독하기
면접 질문 목록으로 가기