gpt4 book ai didi

android - 如何断言可组合测试的下一个启动 Activity ?

转载 作者:行者123 更新时间:2023-12-04 23:57:20 26 4
gpt4 key购买 nike

我有一个带有按钮的可组合项,该按钮可启动其中一项 native Activity (Google 设置)。要在撰写之前对此进行测试(使用 Robolectric),我会做这样的事情:

我的测试:

@Test
fun `MyFragment - when button clicked - starts activity`() {
// ...
val shadowActivity: ShadowActivity = Shadow.extract(activity)
val nextStartedActivity = shadowActivity.nextStartedActivity
assertNotNull(nextStartedActivity)
assertEquals(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, nextStartedActivity.action)
}

对于撰写测试(不使用 Activity 场景),情况有所不同。没有 Activity 句柄,只有一个composeTestRule:

我的测试:

// ...

private val buttonNode get() = composeTestRule.onNodeWithContentDescription("Button")

@Test
fun `MyComposableToTest - when button clicked - starts activity`() {
composeTestRule.setContent {
MyComposableToTest()
}

buttonNode.assertExists().assertHasClickAction().assertIsEnabled().performClick()

// No possibility to get current activity
}

在测试可组合项时如何断言新 Activity 已启动?

一些上下文:

  • Android Gradle 插件 7.0.3
  • Robolectric 4.7.3
  • 编写 1.1.0-beta04

最佳答案

您可以像这样从 ComposeContentTestRule 获取上下文:

lateinit var context : Context
composeTestRule.setContent {
context = LocalContext.current
MyComposableToTest()
}

然后断言下一个开始的 Activity

val shadowActivity: ShadowActivity = Shadow.extract(context as ComponentActivity)
val nextStartedActivity = shadowActivity.nextStartedActivity
assertEquals(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, nextStartedActivity.action)

关于android - 如何断言可组合测试的下一个启动 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70286818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com