如何在 Jetpack compose 中处理 Espresso 空闲资源......?

2024-05-03

我正在 jetpack compose 中使用 junit 和 Espresso 编写 ui 测试用例。我的屏幕由 Lottie 动画和 Kotlin Courtines 的一些代码组成。我正在编写单个测试用例来检查该屏幕中按钮的可见性,但它给了我错误,compse Espresso 变得空闲超时。任何人都可以展示一些示例吗如何在jetpack compose中使用espresso或任何其他方式处理这种情况来处理增量和减量......


因此,如果您要像这样初始化 composeTestRule:

@get:Rule
val composeTestRule = createEmptyComposeRule()

然后,当您有待布局、测量或处于某种无限重组循环中的可组合项时,它将挂起直到空闲。

从 Compose 1.1 开始,我注意到,如果我有一个已组合但未显示在屏幕上的可组合项(例如,在已启动的不可见子片段中),则测试将由于 compose 空闲资源而超时。因此,我的解决方案就是不在测试中定义 composeTestRule,除非测试将与可见的可组合项进行交互。

如果您直接与可组合项交互,则可以尝试以下操作:

composeTestRule.mainClock.autoAdvance = true

另外,也许您的 Lottie 动画正在导致某种无限重组。尝试在没有 Lottie 动画的情况下进行测试。您还可以尝试使用它来禁用应用程序 build.gradle 文件中的动画:

testOptions {
    ...
    animationsDisabled = true
    ...
}

如果这一切仍然失败,请尝试在可组合项中放入日志,以检查它是否在不应该停止的情况下不间断地重组,然后找出发生这种情况的原因。

编辑:另一件事,您可以使用 composeTestRule.registerIdlingResource(idlingResource -> compose Specific Idling Resource.) 注册自己的空闲资源以进行撰写(并弄清楚它是如何工作的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Jetpack compose 中处理 Espresso 空闲资源......? 的相关文章