首页 > 解决方案 > 在 FragmentScenario 测试中膨胀类 com.google.android.material.tabs.TabLayout 时出错

问题描述

我使用以下方法编写了一个测试FragmentScenario

@Test
    fun test() {
        launchFragmentInContainer<MyFragment>(Bundle().apply { putParcelableArray(MY_DATA, getMyData()) })
        // checks here
    }

我收到以下错误:

Error inflating class com.google.android.material.tabs.TabLayout

而且我只有在启动测试时才收到错误(应用程序有效)我试图将 androidTestImplementation 添加"com.google.android.material:material:1.0.0"到 androidTestImplementation 但它没有帮助

我能做些什么来解决这个问题?

标签: androidkotlinandroid-testingandroidxandroid-fragmentscenario

解决方案


活动FragmentScenario启动的默认主题有一个父主题android:Theme.WithActionBar- 而不是需要的MaterialComponents主题TabLayout

您应该传入要使用的主题。

例如,假设您的应用程序具有这样声明的主题:

<style name="AppTheme" parent="Theme.MaterialComponents">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

你会使用:

launchFragmentInContainer<MyFragment>(
    Bundle().apply { putParcelableArray(MY_DATA, getMyData()) },
    R.style.AppTheme)

推荐阅读