7

如何使用 Robolectric 测试 AndroidX 片段?

我添加了testImplementation "org.robolectric:shadows-supportv4:4.0-alpha-3"依赖项并尝试使用此代码:

val controller = SupportFragmentController.setupFragment(
            TestableFragment.buildFragment(DATA),
            TestableFragmentHolderActivity::class.java)

TestableFragmentandroidx.fragment.app.Fragment,TestableFragmentHolderActivityandroidx.appcompat.app.AppCompatActivity

但是在测试过程中出现错误:

java.lang.NoSuchMethodError: org.robolectric.shadows.support.v4.SupportFragmentController.setupFragment(Landroidx/fragment/app/Fragment;Ljava/lang/Class;)Landroidx/fragment/app/Fragment;

4

2 回答 2

6

有一种使用 Robolectric 最新 API 测试片段的新方法。检查官方文档 您需要创建一个FragmentScenario

val fragmentScenario = launchFragmentInContainer<MyFragment>()

然后像您通常使用 Espresso 一样进行测试

onView(withId(R.id.text)).check(matches(withText("Hello World!")))
于 2018-11-12T05:59:32.837 回答
1

请参考这个 git 问题:https ://github.com/robolectric/robolectric/issues/3985 。AndroidX 片段的新 API 即将发布。

于 2018-10-30T09:46:18.600 回答