在 Instrumented 测试中启动 Activity 并附加到 Intent,运行 在 espresso 和 JUnit 5 上
Launching Activity with extra attached to Intent in Instrumented test, running on espresso and JUnit 5
我想启动我的 ActivityScenarioExtension
并附加到 startActivityIntent
。 extra-less场景扩展启动,效果如愿,我执行via
internal class TestMainActivity{
@JvmField
@RegisterExtension
val scenarioExtension = ActivityScenarioExtension.launch<MainActivity>()
@BeforeEach
fun recreateActivity(scenario: ActivityScenario<MainActivity>){
scenario.recreate()
}
}
,但是我不确定如何添加所需的额外内容。
没有找到任何真正的参考来解决如何实现这一点,我只是尝试了
@JvmField
@RegisterExtension
val scenarioExtension = ActivityScenarioExtension.launch<MainActivity>(
Intent().putParcelableArrayListExtra("CROP_URIS", ArrayList())
)
,然而导致
java.lang.RuntimeException: Unable to resolve activity for: Intent { (has extras) }
at androidx.test.core.app.InstrumentationActivityInvoker.startActivity(InstrumentationActivityInvoker.java:402)
at androidx.test.core.app.InstrumentationActivityInvoker.startActivity(InstrumentationActivityInvoker.java:437)
at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:265)
at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:226)
at de.mannodermaus.junit5.ActivityScenarioExtension$Companion$launch.invoke(ActivityScenarioExtension.kt:130)
at de.mannodermaus.junit5.ActivityScenarioExtension$Companion$launch.invoke(ActivityScenarioExtension.kt:130)
at de.mannodermaus.junit5.ActivityScenarioExtension.beforeEach(ActivityScenarioExtension.kt:156)
我在 Espresso startActivity that depends on Intent 中找到了专门针对 JUnit 4 的实现建议,我没有完全转移到 JUnit 5 及其新引入的扩展模型的领域。
在此先感谢您提供的任何帮助。
试试这个:
private val intent = Intent(ApplicationProvider.getApplicationContext(), MainActivity::class.java).apply {
putParcelableArrayListExtra("CROP_URIS", ArrayList())
}
@Rule
@JvmField
val activity = ActivityScenarioRule<MainActivity>(intent)
我想启动我的 ActivityScenarioExtension
并附加到 startActivityIntent
。 extra-less场景扩展启动,效果如愿,我执行via
internal class TestMainActivity{
@JvmField
@RegisterExtension
val scenarioExtension = ActivityScenarioExtension.launch<MainActivity>()
@BeforeEach
fun recreateActivity(scenario: ActivityScenario<MainActivity>){
scenario.recreate()
}
}
,但是我不确定如何添加所需的额外内容。
没有找到任何真正的参考来解决如何实现这一点,我只是尝试了
@JvmField
@RegisterExtension
val scenarioExtension = ActivityScenarioExtension.launch<MainActivity>(
Intent().putParcelableArrayListExtra("CROP_URIS", ArrayList())
)
,然而导致
java.lang.RuntimeException: Unable to resolve activity for: Intent { (has extras) }
at androidx.test.core.app.InstrumentationActivityInvoker.startActivity(InstrumentationActivityInvoker.java:402)
at androidx.test.core.app.InstrumentationActivityInvoker.startActivity(InstrumentationActivityInvoker.java:437)
at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:265)
at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:226)
at de.mannodermaus.junit5.ActivityScenarioExtension$Companion$launch.invoke(ActivityScenarioExtension.kt:130)
at de.mannodermaus.junit5.ActivityScenarioExtension$Companion$launch.invoke(ActivityScenarioExtension.kt:130)
at de.mannodermaus.junit5.ActivityScenarioExtension.beforeEach(ActivityScenarioExtension.kt:156)
我在 Espresso startActivity that depends on Intent 中找到了专门针对 JUnit 4 的实现建议,我没有完全转移到 JUnit 5 及其新引入的扩展模型的领域。
在此先感谢您提供的任何帮助。
试试这个:
private val intent = Intent(ApplicationProvider.getApplicationContext(), MainActivity::class.java).apply {
putParcelableArrayListExtra("CROP_URIS", ArrayList())
}
@Rule
@JvmField
val activity = ActivityScenarioRule<MainActivity>(intent)