获得"No compose views found in the app. Is your Activity resumed?"



我有一个有TextButtonComposable。如果当前方向是纵向的,Text将显示P,否则显示L。点击Button会将方向改为横向,(之后,它应该会将P的文本改为L)

这是可组合

@Composable
fun MyApp() {
val currentOrientation = LocalConfiguration.current.orientation
val orientation = if (currentOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
"P"
} else {
"L"
}
val activity = LocalContext.current as Activity
Column {
Text(text = orientation)
Button(onClick = {
// change orientation to landscape
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}) {
Text(text = "DO IT")
}
}
}

,下面是我测试它的方法

@get:Rule
val composeRule = createComposeRule()
@Test
fun test() {
composeRule.setContent { MyApp() }
// Starts with portrait
composeRule.onNodeWithText("P").assertIsDisplayed()
// Change the orientation to Landscape
composeRule.onNodeWithText("DO IT").performClick()
// Now the text should be `L`
composeRule.onNodeWithText("L").assertIsDisplayed()
}

但是当我运行测试以查看文本是否更新时,我得到了下面的错误。(手动测试仍然有效)

java.lang.IllegalStateException: No compose views found in the app. Is your Activity resumed?
at androidx.compose.ui.test.TestContext.getAllSemanticsNodes$ui_test_release(TestOwner.kt:96)
at androidx.compose.ui.test.SemanticsNodeInteraction.fetchSemanticsNodes$ui_test_release(SemanticsNodeInteraction.kt:82)
at androidx.compose.ui.test.SemanticsNodeInteraction.fetchOneOrDie(SemanticsNodeInteraction.kt:155)
at androidx.compose.ui.test.SemanticsNodeInteraction.assertExists(SemanticsNodeInteraction.kt:147)
at androidx.compose.ui.test.SemanticsNodeInteraction.assertExists$default(SemanticsNodeInteraction.kt:146)

如果你想自己试试,这里是完整的测试文件。

  1. 我在这里错过了什么,我该如何修复它?

测试时屏幕是否打开?

在我的例子中,这很容易通过简单地关闭屏幕来重现。注意,我使用的是模拟器。

我在执行单击事件时遇到了同样的问题。当我用我的设备进行测试时,当您的测试设备/模拟器的屏幕未唤醒(关闭)时发生了这种情况。

我的解决办法就是打开屏幕。

相关内容

  • 没有找到相关文章

最新更新