我有一个ActionProvider,我想测试onCreateActionView方法。当我从测试中调用此方法时,我得到以下异常:
java.lang.AssertionError: LayoutInflater not found.
at android.view.LayoutInflater.from(LayoutInflater.java:214)
at android.view.View.inflate(View.java:16803)
at com.my.app.actionprovider.ContentTypeActionProvider.onCreateActionView(ContentTypeActionProvider.java:58)
以下是方法:
@Override
public View onCreateActionView() {
view = View.inflate(context, R.layout.layout_actionbarpopupmenu, null);
textView = (TextView) view.findViewById(R.id.description);
menu = new PopupMenu(context, view);
int order = 1;
if(ESA){
SubMenu submenu = null;
for (ContentType contentType : ContentType.values()) {
if (contentType.isFirstInGroup()) {
submenu = menu.getMenu().addSubMenu(-1, -1, order++, contentType.getGroupName());
submenu.setIcon(context.getResources().getDrawable(R.drawable.down_arrow));
submenu.add(contentType.getGroupId(), contentType.getId(), order++, contentType.getName());
} else if (contentType.isGroup()) {
submenu.add(contentType.getGroupId(), contentType.getId(), order++, contentType.getName());
} else {
menu.getMenu().add(contentType.getGroupId(), contentType.getId(), order++, contentType.getName());
}
}
}
else{
for (ContentType contentType : contentTypeHelper.getContentTypes()) {
menu.getMenu().add(contentType.getGroupId(), contentType.getId(), order++, contentType.getName());
}
}
UIHelper.setIconVisibleOnMenu(menu);
menu.setOnMenuItemClickListener(this);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu.show();
}
});
setDefaultOption();
return view;
}
我有没有办法测试这种方法?
答案 0 :(得分:0)
您收到该错误是因为您使用的上下文不正确,以使您可以使用的工作:
RuntimeEnvironment.context
作为模拟上下文,如果您使用Robolectric进行测试。