2012-07-18 32 views
19

Tôi đã sử dụng rộng rãi ArrayAdapter trong ứng dụng của mình vì hầu hết các Hoạt động đang nắm giữ ListView và tôi cần một số nội dung tùy chỉnh trong đó.(Unit) Thử nghiệm ArrayAdapter

Tôi đã xem xét các lớp kiểm tra trong tài liệu nhà phát triển Android nhưng đã không thể tìm thấy một số ví dụ hoặc một TestClass thích ...

1) Có bất kỳ thực hành tốt nhất cho (đơn vị) -Thử nghiệm ArrayAdapter trong Android?

2) Tôi có thể chọn phương pháp sai (với bộ điều hợp) và khả năng thử nghiệm bị giết theo cách này không?

Trả lời

31

Bạn có thể viết các bài kiểm tra mở rộng AndroidTestCase Nó sẽ trông giống như sau:

public class ContactsAdapterTest extends AndroidTestCase { 
    private ContactsAdapter mAdapter; 

    private Contact mJohn; 
    private Contact mJane; 

    public ContactsAdapterTest() { 
     super(); 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     ArrayList<Contact> data = new ArrayList<Contact>(); 

     mJohn = new Contact("John", "+34123456789", "uri"); 
     mJane = new Contact("Jane", "+34111222333", "uri"); 
     data.add(mJohn); 
     data.add(mJane); 
     mAdapter = new ContactsAdapter(getContext(), data); 
    } 


    public void testGetItem() { 
     assertEquals("John was expected.", mJohn.getName(), 
       ((Contact) mAdapter.getItem(0)).getName()); 
    } 

    public void testGetItemId() { 
     assertEquals("Wrong ID.", 0, mAdapter.getItemId(0)); 
    } 

    public void testGetCount() { 
     assertEquals("Contacts amount incorrect.", 2, mAdapter.getCount()); 
    } 

    // I have 3 views on my adapter, name, number and photo 
    public void testGetView() { 
     View view = mAdapter.getView(0, null, null); 

     TextView name = (TextView) view 
       .findViewById(R.id.text_contact_name); 

     TextView number = (TextView) view 
       .findViewById(R.id.text_contact_number); 

     ImageView photo = (ImageView) view 
       .findViewById(R.id.image_contact_photo); 

     //On this part you will have to test it with your own views/data 
     assertNotNull("View is null. ", view); 
     assertNotNull("Name TextView is null. ", name); 
     assertNotNull("Number TextView is null. ", number); 
     assertNotNull("Photo ImageView is null. ", photo); 

     assertEquals("Names doesn't match.", mJohn.getName(), name.getText()); 
     assertEquals("Numbers doesn't match.", mJohn.getNumber(), 
       number.getText()); 
    } 
} 

Có lẽ bạn sẽ phải kiểm tra getView nhiều lần với lý lẽ khác nhau, để kiểm tra tất cả các kịch bản.

+0

Hoạt động hoàn hảo. Cảm ơn!! :) – eftokay83

Các vấn đề liên quan