MenuItemCompat.getActionView(itemId)在Robolectric中返回null

时间:2014-06-20 17:49:23

标签: robolectric android-testing

我们知道Robolectric通过为未实现的调用提供null,0值来保持沉默。似乎它没有很好地处理方法调用MenuItemCompat.getActionView()。请参阅以下使用Robolectric无法执行的代码段。

SearchView searchView = (SearchView) MenuItemCompat.getActionView(
    menu.findItem(R.id.action_search));

在这个片段中,Robolectric无法检索SearchView对象,使searchView变量为null。也许Robolectric在这里错过了一些影子实现?

调试之后,我发现在调用android.support.v7.internal.view.menu.MenuItemImpl.getActionView()之前,MenuItemImpl实例已经没有mActionView(mActionView = null),而非compat中的实例已经有了ShadowMenuInflater.addActionViewToItem()

我调试越多,我就越了解问题。问题是这一行String actionViewClassName = attributes.getAttributeValue(ANDROID_NS, "actionViewClass");

{{1}}

它只关心ANDROID_NS而不关心APP_NS,因为AppCompat改为使用APP_NS。

我认为如果Robolectric给我例外情况让我知道要实施哪些阴影会更好。

我还将此案件提交给GitHub

0 个答案:

没有答案