Android JetPack编写测试,如何检查是否出现吐司消息?

ddrv8njm  于 2023-04-04  发布在  Android
关注(0)|答案(1)|浏览(89)

我试着这么做,但它不起作用。

onNodeWithTag(TestTag.OPEN_DRAWER_BUTTON).performClick()
onNodeWithTag(TestTag.SYNCHRONIZE_BUTTON).performClick()
onNodeWithText(activity.getString(R.string.success_update)).assertExists()

我明白了。

java.lang.AssertionError: Failed: assertExists.
Reason: Expected exactly '1' node but could not find any node that satisfies: (Text + EditableText contains 'Exchange rates have been updated!' (ignoreCase: false))

开票人:

tvz2xvvm

tvz2xvvm1#

如果您要验证的文本位于LazyColumn或列表下,则应首先滚动到该项可见的位置,然后执行Assert。

onNodeWithTag(TestTag.OPEN_DRAWER_BUTTON).performClick()
onNodeWithTag(TestTag.SYNCHRONIZE_BUTTON).performClick()
//Scroll to position where text is displayed
onNodeWithText(activity.getString(R.string.success_update)).assertExists()

要做到这一点,你可以使用这样的东西

composeTestRule.onNode(
            hasTestTag("scrollable_node")
        ).performScrollToNode(hasTestTag("text_node"))

你可以在你的专栏或惰性专栏中使用它,比如

Column(
                Modifier
                    .fillMaxSize()
                    .background(White)
                    .verticalScroll(scrollState)
                    .testTag("scrollable_node")

然后在列中你的文本应该有标签

Text(Modifier.testTag("text_node"))

相关问题