[kotlin] Robolectric과 Espresso의 비교

앱을 테스트할 때 Robolectric과 Espresso는 두 가지 인기있는 도구 중 두 가지입니다. 이 둘을 사용하여 안드로이드 앱을 테스트할 수 있지만 각각의 특징과 용도가 다릅니다.

Robolectric

Robolectric은 안드로이드 앱을 테스트하기 위한 라이브러리로, 안드로이드 앱을 에뮬레이션 없이 테스트할 수 있도록 도와줍니다. 이는 테스트를 빠르게 실행할 수 있고 모의 객체(Mocks)를 사용하여 외부 의존성을 실행시키지 않고 테스트할 수 있어 유용합니다.

특징

예시 코드

@Test
fun whenButtonClick_thenTextViewChanges() {
    val activity = Robolectric.buildActivity(MainActivity::class.java).create().start().get()
    val button = activity.findViewById<Button>(R.id.button)
    val textView = activity.findViewById<TextView>(R.id.text_view)

    button.performClick()

    assertEquals("Button Clicked", textView.text)
}

:material에서 Robolectric 라이브러리에 대한 자세한 정보를 확인할 수 있습니다.

Espresso

Espresso는 안드로이드 앱의 UI를 테스트하기 위한 도구로, 사용자의 행동을 시뮬레이션하고 앱의 UI 상호 작용을 테스트하는 데 사용됩니다. 앱의 실제 액티비티나 프래그먼트를 시작하여 UI 상호 작용을 테스트하는 Espresso는 앱의 실제 동작을 정확히 테스트할 수 있도록 도와줍니다.

특징

예시 코드

@Test
fun whenTypeTextAndClickButton_thenTextChanges() {
    onView(withId(R.id.edit_text)).perform(typeText("Hello"))
    onView(withId(R.id.button)).perform(click())
    onView(withId(R.id.text_view)).check(matches(withText("Hello")))
}

:material에서 Espresso에 대한 자세한 정보를 확인할 수 있습니다.

결론

Robolectric은 안드로이드 프레임워크 일부를 모의한 테스트를 지원하며 에뮬레이션 없이 빠르게 테스트할 수 있습니다. 반면에 Espresso는 사용자의 행동을 시뮬레이션하여 UI 상호 작용을 테스트하는데 중점을 두고 있습니다. 두 도구는 각각의 특징에 따라 다른 종류의 안드로이드 앱 테스트에 적합합니다.