Robolectric 与 AndroidX 碎片
Robolectric with AndroidX Fragments
如何使用 Robolectric 测试 AndroidX 片段?
我添加了 testImplementation "org.robolectric:shadows-supportv4:4.0-alpha-3"
依赖项并尝试使用此代码:
val controller = SupportFragmentController.setupFragment(
TestableFragment.buildFragment(DATA),
TestableFragmentHolderActivity::class.java)
TestableFragment
是androidx.fragment.app.Fragment
,TestableFragmentHolderActivity
是androidx.appcompat.app.AppCompatActivity
但是我在测试过程中遇到错误:
java.lang.NoSuchMethodError: org.robolectric.shadows.support.v4.SupportFragmentController.setupFragment(Landroidx/fragment/app/Fragment;Ljava/lang/Class;)Landroidx/fragment/app/Fragment;
请参阅此 git 问题:https://github.com/robolectric/robolectric/issues/3985。即将发布新的 API AndroidX 片段。
Robolectric 的最新 API 提供了一种测试片段的新方法。检查 the official doc
您需要创建一个 FragmentScenario
val fragmentScenario = launchFragmentInContainer<MyFragment>()
然后像平常使用 Espresso 一样进行测试
onView(withId(R.id.text)).check(matches(withText("Hello World!")))
如何使用 Robolectric 测试 AndroidX 片段?
我添加了 testImplementation "org.robolectric:shadows-supportv4:4.0-alpha-3"
依赖项并尝试使用此代码:
val controller = SupportFragmentController.setupFragment(
TestableFragment.buildFragment(DATA),
TestableFragmentHolderActivity::class.java)
TestableFragment
是androidx.fragment.app.Fragment
,TestableFragmentHolderActivity
是androidx.appcompat.app.AppCompatActivity
但是我在测试过程中遇到错误:
java.lang.NoSuchMethodError: org.robolectric.shadows.support.v4.SupportFragmentController.setupFragment(Landroidx/fragment/app/Fragment;Ljava/lang/Class;)Landroidx/fragment/app/Fragment;
请参阅此 git 问题:https://github.com/robolectric/robolectric/issues/3985。即将发布新的 API AndroidX 片段。
Robolectric 的最新 API 提供了一种测试片段的新方法。检查 the official doc
您需要创建一个 FragmentScenario
val fragmentScenario = launchFragmentInContainer<MyFragment>()
然后像平常使用 Espresso 一样进行测试
onView(withId(R.id.text)).check(matches(withText("Hello World!")))