在 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)