Jetpack Compose에서 [뒤로] 버튼 UI 테스트를 수행하려고 합니다.

하고 싶은 일


되돌아오기 단추를 사용할 때 이전 페이지에서 생각했던 대로 되돌아갈지 확인하고 싶습니다.

어떻게


며칠 전 UI Test[1]가 시작되자 이 방법으로는 할 수 없다는 생각에 다음 코드를 썼다.
다음 코드는 움직이지 않습니다
composeTestRule.onRoot().performKeyPress(
    KeyEvent(
	NativeKeyEvent(100, 100, ACTION_DOWN, KEYCODE_BACK, 1)
    )
)
composeTestRule.onRoot().performKeyPress(
    KeyEvent(
	NativeKeyEvent(100, 100, ACTION_UP, KEYCODE_BACK, 1)
    )
)
Root으로 되돌아오는 하드 버튼(정식 명칭은 미디어 버튼인 것 같다)을 누릅니다.그러나 이 onroot는 the root semantics node를 의미하기 때문에 잘 작동하지 않습니다.뷰 루트를 지정할 수 있었으면 좋겠습니다.

어떻게 (이동 코드)


지금까지 쓴 코드는 Compose의 UI Test 코드로 JUnit4에 의존해야 합니다.이렇게 되면 기본적으로 레이아웃과 Unit Test 검증만 가능합니다.다른 한편, 페이지의 이동이나 여러 View를 뛰어넘는 것에 대해 Espresso를 사용합니다.컴포스 테스트에서는'에스프레스소를 힘껏 사용하라'라기보다는 서로 운용하는 형태로 앞서 쓴 코드에 묻힌 것 같다[2].그렇더라도 에스프레소의 의존 관계를 넣어야 하기 때문에 안드로이드의 안드로이드 X Test 관련 의존 관계를 적은 페이지[3]에서 의존 관계 준비를 끌어온다.
이를 바탕으로 에스프레소의 리턴 버튼을 사용할 수 있는 코드를 검색한 결과 Stackoverflow에 글[4]이 있는 것을 발견하고 그대로 넣으면 이동한다.
onView(isRoot()).perform(ViewActions.pressBack())
onView()에서 매개 변수로 던지기isRoot는 두 개의 라이브러리가 존재하고 선택하지 않으면androidx.test.espresso.matcher.ViewMatchers 이동하지 않습니다.

덧붙이다


'되돌리기'버튼이 설치돼 있을 뿐인데 기사는 도무지 찾을 수 없다(이 업계에서는 상식일지도 모른다). 헤매는 과정은 젠의 Scrap[5]에서 꼭 즐겨달라...
페이지를 넘나드는 건 유닛 테스트가 아니고 주니트는 자바의 유닛을 테스트하기 위한 건가 등 정말 입문하는 곳을 알아봤지만 많은 시간이 걸렸는데...
각주
Android Jetpack Compose를 통해 UI Test의/Akira Kashiharahttps://zenn.dev/akira_kashihara/articles/d3e979d8714522 체험(2022-01-07 열람)↩︎
Compose 레이아웃 테스트/Androidhttps://developer.android.com/jetpack/compose/testing?hl=ja(2022-01-07 열람)↩︎
Set up Project for Androidhttps://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/test-setup#android-test-dependencies(2022-01-07 열람)↩︎
Espresso.pressBack() does not call on Back Prosed()/stamanuel on stackoverflowhttps://stackoverflow.com/questions/42861182/espresso-pressback-does-not-call-onbackpressed(2022-01-07 열람)↩︎
검색 방법, 검색 방법~ 검색하기 어려운 집합~/Akira Kashiharahttps://zenn.dev/link/comments/87886e199bdd46↩︎

좋은 웹페이지 즐겨찾기