android - 在 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 但它没有帮助
我能做些什么来解决这个问题?
解决方案
活动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)
推荐阅读
- javascript - Node.js 中的 ECMAscript 导出
- python - 如何让 uvicorn 运行异步构建的应用程序?
- google-cloud-platform - 使用 Dataflow 将文件写入 GCS
- android - Google Play 内部测试曲目不可用,尽管说它处于活动状态
- .htaccess - 不将 Http/www 流量定向到 HTTPS
- python - 将 .slk 数据转换为 .csv 浮点数
- kubernetes - 如何用 Kubernetes 中的服务端点替换部署中的硬编码 IP
- qt - QWidget::visibleRegion() 等效于 QML 项目
- ruby-on-rails - 使 Turbo Demo 应用程序与本地 Rails 服务器一起工作
- typescript - 如何解决“日期”的空问题?