我正在 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(使用前将#替换为@)