android 是否有任何工具或方法来测试重组是否发生在一段代码中?

gfttwv5a  于 2022-11-27  发布在  Android
关注(0)|答案(1)|浏览(113)

是否有任何工具或方法来测试重组是否发生在一段代码中?

ilmyapht

ilmyapht1#

在官方的Compose Testing文档中有一个例子,说明如何使用composeTestRule.setContent测试是否发生了重组,并在其中使用测试中可见的变量跟踪状态。
然后更改测试的状态,并Assert跟踪变量等于预期状态。

@Test
fun counterTest() {
    val myCounter = mutableStateOf(0) // State that can cause recompositions
    var lastSeenValue = 0 // Used to track recompositions
    composeTestRule.setContent {
        Text(myCounter.value.toString())
        lastSeenValue = myCounter.value
    }
    myCounter.value = 1 // The state changes, but there is no recomposition

    // Fails because nothing triggered a recomposition
    assertTrue(lastSeenValue == 1)

    // Passes because the assertion triggers recomposition
    composeTestRule.onNodeWithText("1").assertExists()
}

这个例子是用来展示当你在测试中不使用UI同步方法时的合成测试中的一个边缘情况(比如onNodeWithText().assertExists()),但是我认为它也可以用于你的问题。

相关问题