Ошибка надувания класса com.google.android.material.tabs.TabLayout внутри теста 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" на AndroidTestImplementation, но это не помогло

Что я могу сделать, чтобы это исправить?

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)
Другие вопросы по тегам