android - Robolectric 与 AndroidX fragment

标签 android robolectric androidx

如何使用 Robolectric 测试 AndroidX fragment ?

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

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

TestableFragmentandroidx.fragment.app.FragmentTestableFragmentHolderActivityandroidx.appcompat.app.AppCompatActivity

但是我在测试的时候遇到了一个错误:

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

最佳答案

有一种使用 Robolectric 最新 API 测试 fragment 的新方法。检查the official doc 您需要创建一个 FragmentScenario

val fragmentScenario = launchFragmentInContainer<MyFragment>()

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

onView(withId(R.id.text)).check(matches(withText("Hello World!")))

关于android - Robolectric 与 AndroidX fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52235118/

相关文章:

android - 无法添加依赖mapBox SDK错误 fragment

android - Android Oreo 中的 RTL 布局错误

android - "device reset to factory settings"是否使数据无法恢复?

java - 如何结合 PowerMock 和 Robolectric

android - asyncTask 测试不执行

android - 在androidx.fragment.app.Fragment中,setUserVisibleHint()被弃用了,并且没有被执行,为什么?

android - 如何使用 Irrlicht 引擎在 Android NDK 中设置 Assets 文件夹的路径?

android - 来自服务的持久性 android 通知

android - 找不到 Robolectric includeAndroidResources

升级到 gradle 5.0 后 Android 数据绑定(bind) "Missing import expression although it is registered"