[kotlin] 안드로이드 단위 테스트 프레임워크 소개

안드로이드 앱의 품질을 보증하기 위해 단위 테스트가 매우 중요합니다. 안드로이드 앱을 개발하면서 코드를 안정적으로 유지하고 예기치 않은 오류를 방지하기 위해서는 효과적인 단위 테스트 프레임워크를 사용해야 합니다. 안드로이드 앱의 단위 테스트에 사용되는 Kotlin에서 제공하는 주요 프레임워크들을 소개하겠습니다.

1. JUnit

JUnit은 가장 인기 있는 단위 테스트 프레임워크 중 하나입니다. JUnit은 안드로이드 앱의 단위 테스트뿐만 아니라 Java 기반의 모든 프로젝트에서 사용할 수 있습니다. Kotlin에서도 JUnit을 사용하면 안드로이드 앱의 핵심 비즈니스 로직을 쉽게 테스트할 수 있습니다.

import org.junit.Assert
import org.junit.Test

class ExampleUnitTest {
    @Test
    fun addition_isCorrect() {
        val sum = 2 + 2
        Assert.assertEquals(4, sum)
    }
}

2. Mockito

Mockito는 안드로이드 앱의 단위 테스트에서 모의 객체(Mock Object)를 생성하여 의존성을 주입하고 행위를 검증하는데 사용됩니다. Mockito를 사용하면 외부 의존성을 가지는 코드들을 격리시켜 테스트할 수 있습니다.

import org.junit.Assert
import org.junit.Test
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock

class ExampleUnitTest {
    @Test
    fun mockitoTest() {
        val mockedList = mock(MutableList::class.java)
        
        `when`(mockedList[0]).thenReturn("mockito")
        
        Assert.assertEquals("mockito", mockedList[0])
    }
}

3. Espresso

Espresso는 안드로이드 UI 컴포넌트를 테스트하기 위한 프레임워크로, 사용자 인터페이스 테스트를 자동화하는 데 사용됩니다. Espresso를 사용하면 앱의 UI 요소에 대한 단위 테스트를 작성하고 실행하여 UI 상호작용을 신속하게 테스트할 수 있습니다.

import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
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

@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
    
    @Rule
    @JvmField
    var activityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)
    
    @Test
    fun buttonClickTest() {
        onView(withId(R.id.button)).perform(click())
        onView(withId(R.id.textView)).check(matches(withText("Button Clicked")))
    }
}

위에서 소개한 JUnit, Mockito, Espresso 등의 프레임워크를 사용하여 안드로이드 앱의 단위 테스트를 작성하고 실행하여 앱의 품질을 향상시킬 수 있습니다.

참고 문헌: