2

此答案演示了如何在带注释的字符串中嵌入链接并使其可点击。这很好用,并使用正确的 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()
    }
}

看起来像是hasText(termsOfServiceText, substring = true)获取了整个带注释的字符串节点,而不是子字符串“服务条款”。因此,on click 方法确实被触发,只是不在带注释的字符串中的正确位置。如果需要,很乐意提供更多信息。谢谢!

4

1 回答 1

1

您可以在偏移处执行单击。这会在尾端水平执行点击,在中间垂直执行。

composeTestRule.onNode(hasText(termsOfServiceText, substring = true))
    .performGesture { click(percentOffset(.9f, .5f)) }

缺点是它使测试更加脆弱。

于 2021-11-23T13:41:18.223 回答