2016-04-27 8 views
0

Ich versuche Unit-Test zu testen, wo ich Picasso zu den Ladebildern verwende. Um den Adapter zu testen muss ich das Picasso verspotten. Damit werden die eigentlichen Bilder nicht aus dem Netzwerk geladen.Unit Testing Activity/Adaper, die Picasso verwendet

Ich fand eine SO question. Aber es scheint ziemlich veraltet. Ich benutze Android-Test-Support-Bibliothek.

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; 
    } 
} 

Antwort

1

so einfach sein sollte, nur Mockito verwenden, zum Beispiel:

@Mock 
Picasso picasso; 

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

Und das sollte es sein.

+0

Also, muss ich Picasso Instanz in Adapter über Konstruktor injizieren? – vsvankhede

+0

Ja, Sie sollten in diesem Fall. – pavle