2016-08-12 3 views
1

私が行っているチームでは、最終的にAppCompatが導入されていますが、テストスイートはアップグレード後に失敗します。不明なリソース0:AppCompatにアップグレードするとRobolectricがShareActionProviderで失敗する

コマンドラインからテストスイートを実行しているときに、いくつかのテストで問題が発生しました。

Androidスタジオから個別に実行すると、それらは合格します。

私がスタックトレースについて興味深いのは、ツールバーの共有アイコンをまったく使用していないときにShareActionProviderへの参照があることです。以下

スタックトレース:

android.content.res.Resources$NotFoundException: unknown resource 0 
    at org.robolectric.shadows.ShadowAssetManager.getAndResolve(ShadowAssetManager.java:384) 
    at org.robolectric.shadows.ShadowAssetManager.getResourceValue(ShadowAssetManager.java:129) 
    at android.content.res.AssetManager.getResourceValue(AssetManager.java) 
    at android.content.res.Resources.getValue(Resources.java:1347) 
    at android.support.v7.widget.AppCompatDrawableManager.createDrawableIfNeeded(AppCompatDrawableManager.java:226) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:199) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:192) 
    at android.support.v7.widget.ShareActionProvider.onCreateActionView(ShareActionProvider.java:229) 
    at android.support.v4.view.ActionProvider.onCreateActionView(ActionProvider.java:166) 
    at android.support.v7.view.menu.MenuItemImpl.getActionView(MenuItemImpl.java:630) 
    at android.support.v7.widget.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:190) 
    at android.support.v7.widget.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:451) 
    at android.support.v7.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1138) 
    at android.support.v7.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91) 
    at android.support.v7.widget.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:229) 
    at android.support.v7.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:284) 
    at android.support.v7.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:1030) 
    at android.support.v7.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:1053) 
    at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:460) 
    at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 

答えて

1

は、ソリューションは、当社のトップレベルのテーマに次の行を追加することでした:ic_shareは、我々が共有するために使うアイコンです

<item name="actionModeShareDrawable">@drawable/ic_share</item> 

。例えば

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="actionModeShareDrawable">@drawable/ic_share</item> 
</style>