Robolectric资源$NotFoundException:drawable\abc_ic_ab_back_material.xml来自可绘制的资源ID,无法找到。

4

当我尝试运行:

Robolectric.setupActivity(MainActivity.class).getSupportFragmentManager()
                .beginTransaction().add(mapFragment, "" + NavigationCtrl.FRAG_MAP).commit();

Robolectric抛出一个错误:

android.content.res.Resources$NotFoundException: File build\intermediates\res\merged\dev\drawable\abc_ic_ab_back_material.xml from drawable resource ID #0x7f020013
    at android.content.res.Resources.loadDrawable(Resources.java:2091)
    at org.robolectric.util.ReflectionHelpers.callInstanceMethod(ReflectionHelpers.java:195)
    at org.robolectric.internal.Shadow.directlyOn(Shadow.java:57)
    at org.robolectric.shadows.ShadowResources.loadDrawable(ShadowResources.java:225)
    at android.content.res.Resources.loadDrawable(Resources.java)
    at android.content.res.Resources.getDrawable(Resources.java:695)

Caused by: org.xmlpull.v1.XmlPullParserException: XML file build\intermediates\res\merged\dev\drawable\abc_ic_ab_back_material.xml line #-1 (sorry, not yet implemented): invalid drawable tag vector
    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:897)
    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:837)
    at android.content.res.Resources.loadDrawable(Resources.java:2087)

我的其他 Robolectric 测试都能正常运行,只有 "setupActivity" 这些测试出了问题(有几个)。

我知道我也可以使用 SupportFragmentTestUtil.startFragment(fragment) 来启动我的 fragment,但我需要传递 "tag" 变量。

有什么想法吗?


你正在测试哪个Android版本? - guipivoto
它是矢量可绘制的吗? - Eugen Martynov
我正在为我的Runner使用@Config(sdk = 18...)。我使用的是appCompat 24.1.1,我尝试将“vectorDrawables.useSupportLibrary = true”添加到build.gradle文件中。 - user2230304
1
材料意味着您的SDK应该更高或至少为“21”,而不是“18”。这就是此错误的原因。 - piotrek1543
@piotrek1543 将 @Config(sdk = 18) 更改为 @Config(sdk = 21) 确实使我的测试再次通过。如果您想回答这个问题,我可以将其标记为已回答。干杯。 - user2230304
@user2230304 我已经添加了答案。很高兴听到我能帮到你。 - piotrek1543
1个回答

2

解释

Material是指你的sdk应该更高,至少为21,而不是18。这就是出现此错误的原因。

解决方案

@Config(sdk = 18)更改为@Config(sdk = 21)或更高版本即可。

这样就可以解决问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接