android - 是否可以断言节点在 jetpack compose 测试中是可滚动的
问题描述
执行测试时是否可以断言 jetpack compose 节点是可滚动的?
class MyTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun givenEnoughItems_thenAssertListIsScrollable() {
composeTestRule.setContent {
BasicTheme {
ScrollableComponent(items = List(1000) { "$it" })
}
}
composeTestRule.onRoot().fetchSemanticsNode().assertIsScrollable()
}
}
fun SemanticsNodeInteraction.assertIsScrollable() : SemanticsNodeInteraction {
// What would go here?
}
解决方案
使用hasScrollAction()
.
例子
import androidx.compose.ui.test.hasScrollAction
import androidx.compose.ui.test.assert
private fun assertNodeIsScrollable() {
findNode().assert(hasScrollAction())
}
并且findNode()
会像
private fun findNode(): SemanticsNodeInteraction {
return composeTestRule.onNodeWithTag(
testTag = "test_tag",
)
}
推荐阅读
- python - Bokeh RuntimeError,如何在绘图中添加工具提示?
- javascript - 如何在反应中将两个函数传递给onClick事件
- csv - Kony Datagrid 导出
- hyperledger-fabric - 如何更改作曲家休息服务器的设置
- spring-mvc - 有没有办法读取 Spring Security 元数据?
- laravel - Laravel 自定义错误
- ios - 从后台检查
- excel - Excel vba PasteSpecial xlAdd循环
- javascript - 如何使此滚动内容高于内容 120 像素?
- c# - 将数据添加到实体框架中的动态表