2016-10-19 2 views
2

Ich brauchte ein paar Tage, konnte aber immer noch keine Lösung finden. Ich habe einen Fehler beim Ausführen von Roboclectric-Tests, die besagt, dass Font-Dateien nicht gefunden werden können. Im Folgenden wird der gesamte Stack-TraceRobolectric-Test kann keine Font-Datei finden

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 

Im Grunde hat ich XML-Dateien, die benutzerdefinierten Font-Datei verwendet, wird die Font-Datei in res Ordnern gespeichert, wenn ich Aktivitätsinstanz in Robolectric Tests verstärken und die Aktivität initialisiert wird, Es sucht nach der Schriftartendatei im Verzeichnis/build/intermediates/res/merged, aber irgendwie kann robolectric diese Schriftartendatei nicht finden.

Nicht sicher, warum das passiert ist. Jeder Rat wird sehr geschätzt!

Antwort

5

Das ist bekannt bug mit dem Upgrade der Android Gradle Plugin zu v2.2.0.

Als Abhilfe fügen Sie diese zu Ihrer 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"]) 
    } 
+0

funktioniert perfekt! Danke! – Cheng