tôi thêm cụm từ này như tôi nghĩ rằng nó có thể giúp các lập trình viên muốn kiểm tra Nhà cung cấp nội dung của họ.
Hãy tưởng tượng Nhà cung cấp nội dung của bạn được gọi là MyProvider và bạn có một lớp hợp đồng được gọi là MyProviderContract xác định một số hằng số.
Trước hết, bạn sẽ viết một lớp thử nghiệm có tên là MyProviderTestCase
được kế thừa từ ProviderTestCase2<MyProvider>
. Bạn sẽ phải xác định một constructor mà sẽ gọi super
constructor:
public MyProviderTestCase() {
super(MyProvider.class, MyProviderContract.AUTHORITY);
}
Sau đó, thay vì sử dụng trực tiếp cung cấp dịch vụ của bạn (tránh sử dụng getProvider()
là người sử dụng của nhà cung cấp nội dung của bạn sẽ không thể truy cập trực tiếp), sử dụng getMockContentResolver()
để lấy tham chiếu đến trình phân giải nội dung và sau đó gọi phương thức của trình giải quyết nội dung này (query
, insert
, v.v.). Trong đoạn mã sau, tôi chỉ cách kiểm tra phương thức insert
.
public void testInsert() {
Uri uri = MyProviderContract.CONTENT_URI;
ContentValues values = new ContentValues();
values.put(MyProviderContract.FIELD1, "value 1");
values.put(MyProviderContract.FIELD2, "value 2");
Uri resultingUri = getMockContentResolver().insert(uri, values);
// Then you can test the correct execution of your insert:
assertNotNull(resultingUri);
long id = ContentUris.parseId(resultingUri);
assertTrue(id > 0);
}
Sau đó, bạn có thể thêm bao nhiêu phương pháp thử thay vì nhà cung cấp nội dung trực tiếp, cũng như người dùng của nhà cung cấp nội dung của bạn.
Không có nhiều mã mẫu trên lớp ProviderTestCase2 trên internet. Điều này rất hữu ích. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Trong [Tài liệu Android] (http://developer.android.com/tools/testing/contentprovider_testing.html#WhatToTest), họ khuyên bạn không nên sử dụng trực tiếp nhà cung cấp nội dung của bạn và chuyển qua trình giải quyết nội dung thay thế. Chỉ cần đọc bài đăng của tôi để xem ví dụ đầy đủ hơn về cách kiểm tra nhà cung cấp nội dung. – eternay