相关疑难解决方法(0)

片段单元测试:launchFragment 抛出 ClassCastException

我试图在我的单元测试中调用 Fragment 类中的方法,但我不断收到错误消息 java.lang.ClassCastException: androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity cannot be cast to com.nu.rms.inspections.ui.activity.InspectionActivity

我正在关注 Google 的文档。我很困惑为什么空片段活动有一个演员试图成为我的检查活动(片段所在的父活动),也许这是预期的?

我可以做些什么来缓解 CastClassException 并在我的单元测试中使用我的片段方法?(相关问题不能解决我的问题

测试

@RunWith(AndroidJUnit4::class)
class ExampleUnitTest {
    @Test
    fun `inspection failure point to location mapping is correct`() {
        val scenario = launchFragment<ContentFragment>()
        scenario.onFragment { fragment ->
            //TODO: test logic
        }
    }
...
}
Run Code Online (Sandbox Code Playgroud)

片段类

import androidx.fragment.app.Fragment
...
class ContentFragment : Fragment() {...}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

java.lang.ClassCastException: androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity cannot be cast to com.nu.rms.inspections.ui.activity.InspectionActivity
    at com.nu.rms.inspections.ui.fragment.ContentFragment.clearRFIDCache(ContentFragment.kt:565)
    at com.nu.rms.inspections.ui.fragment.ContentFragment.showStep1(ContentFragment.kt:222)
    at com.nu.rms.inspections.ui.fragment.ContentFragment.access$showStep1(ContentFragment.kt:37)
    at com.nu.rms.inspections.ui.fragment.ContentFragment$onViewCreated$1.onChanged(ContentFragment.kt:77)
    at com.nu.rms.inspections.ui.fragment.ContentFragment$onViewCreated$1.onChanged(ContentFragment.kt:37)
    at androidx.lifecycle.LiveData.considerNotify(LiveData.java:113) …
Run Code Online (Sandbox Code Playgroud)

testing android unit-testing android-fragments android-fragmentactivity

2
推荐指数
1
解决办法
2492
查看次数