Joh*_*lls 9 android android-jetpack-compose-text
这个答案演示了如何在带注释的字符串中嵌入链接并使其可单击。这非常有效,并且可以使用正确的 URL 触发点击。但是,我似乎无法编写一个单击带注释的文本来打开链接的测试。有人成功编写过这样的测试吗?我的生产代码与答案中的非常相似。下面是我的测试代码:
@Test
fun it_should_open_terms_of_service_link() {
val termsOfServiceText = getString(R.string.settings_terms)
try {
Intents.init()
stubAnyIntent()
composeTestRule.onNode(hasText(termsOfServiceText, substring = true)).performClick()
assertLinkWasOpened(getString(R.string.settings_terms_link))
} finally {
Intents.release()
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来像是hasText(termsOfServiceText, substring = true)获取整个带注释的字符串节点,而不是仅获取子字符串“服务条款”。因此,单击方法确实被触发,只是不在带注释的字符串中的正确位置触发。如果需要,很乐意提供更多信息。谢谢!
小智 2
您可以在偏移处执行单击。这将在水平尾部执行单击,在垂直方向执行中间单击。
composeTestRule.onNode(hasText(termsOfServiceText, substring = true))
.performTouchInput { click(percentOffset(.9f, .5f)) }
Run Code Online (Sandbox Code Playgroud)
缺点是它使测试变得更加脆弱。