AndroidStudio:Kotlin RecyclerViewのIntentテストメモ。Espresso使用。

JavaからConvertして多少手直ししただけなのでもっといろんなことができるはず。
参考は以下
https://www.takaiwa.net/2016/05/espressorecyclerview.html

これで使いまわしたいViewのIdとpositionをRecyclerViewActions.actionOnItemAtPosition内で指定することでそこのViewがクリックされる。

    object MyViewAction {

        fun clickChildViewWithId(id: Int): ViewAction {
            return object : ViewAction {
                override fun getConstraints(): Matcher<View> ?{
                    return null
                }

                override fun getDescription(): String {
                    return ""
                }

                override fun perform(uiController: UiController, view: View) {
                    val v = view.findViewById<View>(id)
                    if (v != null) {
                        v.performClick()
                    }
                }
            }
        }
    }

これをこんな感じに使う。
RecyclerViewの中にあるデータが入っているかどうかを確認するだけならrecyclerView.check(matches(withText("")))でいいっぽいけど、任意の位置にあるデータが入っているかを確認するには結構めんどくさい手順がいるみたい。
clickChildViewWithIdは使いまわすViewのIdを指定している。
MainAdapter.MainViewHolderはViewHolderを継承させて自分で定義したもの。

    @Test
    fun onClickButtonInRecyclerView(){
        val recyclerView = onView(withId(R.id.recyclerview))
        var rand = (0..30).random()
        recyclerView.perform(
            RecyclerViewActions.actionOnItemAtPosition<MainAdapter.MainViewHolder>(rand,MyViewAction.clickChildViewWithId(R.id.button))
        )
        recyclerView.check(matches(withText("")))
        intended(
            allOf(
                hasComponent(hasShortClassName(".SubActivity")),
                toPackage("work.prgrm.sample"),
                hasExtra("position",rand)
            )
        )
    }

Intentの説明

AndroidStudio:Kotlin Espresso使用。Button,IntentのUIテストコードメモ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA