Android 如何使用IntentsTestRule和launchFragmentInContainer测试从片段发送的意图

Android 如何使用IntentsTestRule和launchFragmentInContainer测试从片段发送的意图,android,android-fragments,android-intent,android-espresso,android-testing,Android,Android Fragments,Android Intent,Android Espresso,Android Testing,我有一个片段,它开始了一项有目的的活动。我想使用Espresso UI为此编写一个单元测试。我知道Espresso包含一个用于测试意图的类,名为IntentsTestRule。此规则唯一的问题是它只适用于活动,而不适用于片段,因为其构造函数不接受Fragmenttype的子类型 @RunWith(AndroidJUnit4::class) @Config(application = TestApplication::class) class MyFragmentSpec { @Test

我有一个片段,它开始了一项有目的的活动。我想使用
Espresso UI
为此编写一个单元测试。我知道Espresso包含一个用于测试意图的类,名为
IntentsTestRule
。此规则唯一的问题是它只适用于活动,而不适用于片段,因为其构造函数不接受
Fragment
type的子类型

@RunWith(AndroidJUnit4::class)
@Config(application = TestApplication::class)
class MyFragmentSpec {

    @Test
    fun `On next button clicked send intent to start activity`() {
        launchFragmentInContainer<MyFragment>()
        onView(withId(R.id.edit_text)).perform(typeText("HelloWorld\n"))
        onView(withId(R.id.next_button)).perform(click())
        Thread.sleep(2000L)
        intended(hasAction("com.my.application.randomactitivy"))
    }
}

我知道我迟到了,但我遇到了同样的问题

因为launchFragmentInContainer在EmptyFragmentActivity实例中启动片段 我尝试了以下方法,它对我有效

@get:Rule
 val intentsTestRule = IntentsTestRule(FragmentScenario.EmptyFragmentActivity::class.java)
希望有帮助

@get:Rule
 val intentsTestRule = IntentsTestRule(FragmentScenario.EmptyFragmentActivity::class.java)