androidTestImplementation('androidx.compose.ui:ui-test-junit4:1.0.3')
var isChecked by remember { mutableStateOf(false) }
class SwitchTest {
@get:Rule
val composeTestRule = createAndroidComposeRule()
@Test
fun toggleSwitch() {
composeTestRule.setContent {
Switch(
isChecked = isChecked,
onCheckedChange = { isChecked = it }
)
}
// 初始状态下,开关应该是关闭状态
composeTestRule.onNodeWithTag("switch").assertHasClickAction()
composeTestRule.onNodeWithTag("switch").assertDoesNotHaveText("ON")
composeTestRule.onNodeWithTag("switch").assertHasText("OFF")
// 点击后,开关应该是打开状态
composeTestRule.onNodeWithTag("switch").performClick()
composeTestRule.onNodeWithTag("switch").assertDoesNotHaveText("OFF")
composeTestRule.onNodeWithTag("switch").assertHasText("ON")
}
}
在这个测试用例中,首先使用composeTestRule.setContent
将要测试的Composable函数添加到Compose视图中,然后使用composeTestRule.onNodeWithTag
获取到开关节点,并执行一系列断言操作,例如判断开关的状态、执行点击操作等。
注意,需要在相应的Composable函数中设置开关的tag属性,例如:
Switch(
isChecked = isChecked,
onCheckedChange = { isChecked = it },
modifier = Modifier.testTag("switch")
)