@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()
}
1条答案
按热度按时间ilmyapht1#
在官方的Compose Testing文档中有一个例子,说明如何使用
composeTestRule.setContent
测试是否发生了重组,并在其中使用测试中可见的变量跟踪状态。然后更改测试的状态,并Assert跟踪变量等于预期状态。
这个例子是用来展示当你在测试中不使用UI同步方法时的合成测试中的一个边缘情况(比如
onNodeWithText().assertExists()
),但是我认为它也可以用于你的问题。