使用 Picasso 的单元测试 Activity/Adaper

Unit Testing Activity/Adaper which uses Picasso

我正在尝试对使用 picasso 加载图像的适配器进行单元测试。 为了对适配器进行单元测试,我需要模拟毕加索。这样它就不会从网络加载实际图像。

我找到了一个 SO question。但它似乎已经过时了。我正在使用 android 测试支持库。

MyAdapter.java

public class MyAdapter extends ArrayAdapter<T> {


    public PackageAdapter(Context context, ArrayList<T> data) {
        super(context, 0, data);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Model model = getItem(position);
        ViewHolder vh;

        if (convertView == null) {
            vh = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.item_list, parent, false);

            vh.imageItem = (ImageView) convertView.findViewById(R.id.iv_item_image);
            vh.textViewItem = (TextView) convertView.findViewById(R.id.tv_item_name);
            convertView.setTag(vh);
        } else {
            vh = (ViewHolder) convertView.getTag();
        }

        vh.textViewItem.setText(model.getName());
        Picasso.with(context)
             .load(model.getImagePath())
             .into(vh.imageItem);

        return convertView;
    }

    public static class ViewHolder {
        ImageView imageItem;
        TextView textViewItem;
    }
}

那应该很简单,就用Mockito,例如:

@Mock
Picasso picasso;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}

应该就是这样了。