Robolectric测试找不到字体文件

Che*_*eng 3 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
Run Code Online (Sandbox Code Playgroud)

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

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

Eug*_*nov 7

这是将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"])
    }
Run Code Online (Sandbox Code Playgroud)