在FragmentScenario测试中夸大类com.google.android.material.tabs.TabLayout时出错

时间:2019-08-13 17:21:02

标签: android kotlin android-testing androidx android-fragmentscenario

我使用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"添加到a​​ndroidTestImplementation,但没有帮助

该如何解决?

1 个答案:

答案 0 :(得分:1)

活动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)