使用 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);
}
应该就是这样了。
我正在尝试对使用 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);
}
应该就是这样了。