Robolectric 测试找不到字体文件

标签 robolectric

我现在花了几天时间,但仍然找不到解决方案。运行 robolectric 测试时出现错误,提示找不到字体文件。以下是整个堆栈跟踪

android.view.InflateException: XML file build/intermediates/res/merged/debug/layout/fragment_users_list.xml line #-1 (sorry, not yet implemented): Error inflating class com. mycustom.common.views.RobotoTextView

// real issue here
Caused by: java.lang.RuntimeException: Font not found at [build/intermediates/bundles/debug/assets/Roboto-Light.ttf]
at org.robolectric.shadows.ShadowTypeface.createFromAsset(ShadowTypeface.java:73)
at android.graphics.Typeface.createFromAsset(Typeface.java)
at com.mycustom.utils.font.RobotoUtil.getRobotoTypeface(RobotoUtil.java:45)
at com.mycustom.common.views.RobotoTextView.setFontType(RobotoTextView.java:46)
at com.mycustom.common.views.RobotoTextView.<init>(RobotoTextView.java:33)
... 89 more

基本上我有使用自定义字体文件的 xml 文件,字体文件保存在 res 文件夹中,当我在 Robolectric 测试中加强事件实例并初始化事件时,它将在/build/intermediates/res 中查找字体文件/merged folder ,但不知何故 robolectric 找不到该字体文件。

不知道为什么会这样。任何建议将不胜感激!

最佳答案

已知bug随着的升级Android Gradle 插件 到 v2.2.0。

作为解决方法,将此添加到您的 build.gradle :

applicationVariants.all { variant ->
        def productFlavor = variant.productFlavors[0] != null ? "${variant.productFlavors[0].name.capitalize()}" : ""
        def buildType = "${variant.buildType.name.capitalize()}"
        tasks["compile${productFlavor}${buildType}UnitTestSources"].dependsOn(tasks["merge${productFlavor}${buildType}Assets"])
    }

关于Robolectric 测试找不到字体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137273/

相关文章:

android - ShadowAlertDialog.getLatestAlertDialog() 为 android.support.v7.app.AlertDialog 返回 null

android - Robolectric with Gradle:软件包org.robolectric不存在

android - 单元测试 RecyclerView OnItemTouchListener Robolectric

java - Robolectric 测试 gridview onclick 开始新 Activity

java - Robolectric 和 SQLite.getVersion

android - JaCoCo 不适用于 Robolectric 测试

java - 使用 Robolectric 模拟对项目的点击

android - 启动 junit/robolectric 测试 (gradle)

java - Robolectric 创建不同应用程序的虚拟共享首选项

android - 使用 Robolectric 和 Mockito 在 Android 上进行 TDD