[kotlin] Robolectric과 Espresso의 비교
앱을 테스트할 때 Robolectric과 Espresso는 두 가지 인기있는 도구 중 두 가지입니다. 이 둘을 사용하여 안드로이드 앱을 테스트할 수 있지만 각각의 특징과 용도가 다릅니다.
Robolectric
Robolectric은 안드로이드 앱을 테스트하기 위한 라이브러리로, 안드로이드 앱을 에뮬레이션 없이 테스트할 수 있도록 도와줍니다. 이는 테스트를 빠르게 실행할 수 있고 모의 객체(Mocks)를 사용하여 외부 의존성을 실행시키지 않고 테스트할 수 있어 유용합니다.
특징
- 안드로이드 프레임워크의 일부분을 모의(Mock)로 만들어 테스트를 빠르게 실행 가능
- 에뮬레이션 없이 테스트 가능
- 모의 객체(Mockito 또는 다른 Mock 라이브러리 사용 가능
예시 코드
@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는 앱의 실제 동작을 정확히 테스트할 수 있도록 도와줍니다.
특징
- 앱의 UI 상호 작용 테스트를 지원
- 사용자의 행동 시뮬레이션 가능
- 앱의 실제 동작을 정확하게 테스트 가능
예시 코드
@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 상호 작용을 테스트하는데 중점을 두고 있습니다. 두 도구는 각각의 특징에 따라 다른 종류의 안드로이드 앱 테스트에 적합합니다.