느리고 확장성 부족
하지만 실제 안드로이드 기기 동작에 충실
테스트 코드를 자동화하자!!!!!!!!!!
UI 테스트에서 사용
간단한 구문을 사용해 테스트 코드 작성 가능
경로 : app-module/src/androidTest/java/
예시
@get:Rule
val activityRule = ActivitySenarioRule(MainActivity::class.java)
@Test
fun 텍스트뷰(){
onView(withId(R.id.text_view))
.check(matches(withText("Hello World")))
}
@Test
fun 버튼(){
onView(withId(R.id.button))
.perform(click())
onView(withId(R.id.text_view))
.check(matches(withText("Hi")))
}
@Test
fun 스크롤시_버튼_보이기(){
onView(withId(R.id.scroll_view))
.perform(swipeUp())
onView(withId(R.id.button))
.check(matches(isDisplayed()))
}
@RunWith(RobolectricTestRunner::class)
internal class MainActivityTest {
@Test
fun `사용자가 버튼을 한 번 누르면 Hello World가 표시된다`() {
val activityController = Robolectric.buildActivity(MainActivity::class.java)
activityController.use { controller ->
controller.setup()
//controller.create() //이것만 해도 테스트 통과 가능
//controller.start()
//controller.resume()
val activity: MainActivity = controller.get()
// when
activity.findViewById<Button>(R.id.button).performClick()
// then
val actual = activity.findViewById<TextView>(R.id.text_view).text.toString()
assertThat(actual).isEqualTo("Hi")
}
}
}