LoginSignup
0
0

【Jetpack Compose】Recompose が発生していないことをテストする

Posted at

小ネタです。 Recompose が発生していないことをテストするシンプルな方法を紹介します。

コンポジション回数をカウントする

次のコードは BasicTextField2 のテストコード からの引用です。やっていることは実にシンプルでコンポジション回数をカウントするための変数(compositionCount)を1つ用意し、それを Composable 関数の冒頭でインクリメントするだけです。

このコードでは "hello" "world" という単語を入力したときに Recompose が発生していないことをテストしています。よって最後に compositionCount == 1 であることを確認しています。

fun textField_imeUpdatesDontCauseRecomposition() {
        val state = TextFieldState()
        var compositionCount = 0  // コンポジション回数をカウントする変数
        rule.setContent {
            compositionCount++ // Composable 関数の冒頭でカウントをインクリメントする
            BasicTextField2(
                state = state,
                modifier = Modifier
                    .fillMaxSize()
                    .testTag(Tag),
            )
        }

        rule.onNodeWithTag(Tag).performTextInput("hello")
        rule.onNodeWithTag(Tag).performTextInput("world")
        
        rule.runOnIdle {
            assertThat(compositionCount).isEqualTo(1) // コンポジション回数が1であることを確認する
        }
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0