Nếu bạn đang triển khai một trình cung cấp nội dung để lưu trữ và truy xuất dữ liệu hoặc để cho phép các ứng dụng khác truy cập vào dữ liệu, bạn nên kiểm tra ứng dụng của mình để đảm bảo rằng nó không hoạt động theo cách không mong muốn. Bài học này mô tả cách kiểm thử chế độ công khai nhà cung cấp nội dung và cũng áp dụng cho các nhà cung cấp mà bạn giữ bí mật ứng dụng của riêng bạn.
Tạo chương trình kiểm thử tích hợp cho nhà cung cấp nội dung
Trình cung cấp nội dung cho phép bạn truy cập vào dữ liệu thực của người dùng, vì vậy, bạn phải đảm bảo bạn kiểm thử trình cung cấp nội dung trong môi trường kiểm thử riêng biệt. Chiến dịch này cho phép bạn chỉ chạy dựa trên các phần phụ thuộc dữ liệu được đặt rõ ràng trong trường hợp kiểm thử. Điều này cũng có nghĩa là các thử nghiệm không sửa đổi dữ liệu người dùng thực tế. Cho Ví dụ: bạn nên tránh viết một kiểm thử không thành công vì vẫn còn dữ liệu từ thử nghiệm trước đó. Tương tự, bạn nên tránh thêm hoặc xoá kiểm thử thông tin liên hệ thực tế của một nhà cung cấp.
Để kiểm thử riêng trình cung cấp nội dung của bạn, hãy sử dụng ProviderTestCase2
. Lớp này cho phép bạn sử dụng các lớp đối tượng mô phỏng Android như
IsolatedContext
và MockContentResolver
để truy cập vào tệp và
thông tin cơ sở dữ liệu mà không ảnh hưởng đến
dữ liệu người dùng thực tế.
Bài kiểm thử tích hợp của bạn nên được viết dưới dạng lớp kiểm thử JUnit 4. Để tìm hiểu thêm về cách tạo các lớp kiểm thử JUnit 4 và sử dụng xác nhận JUnit 4, hãy xem Tạo một Lớp kiểm thử đơn vị cục bộ.
Để tạo kiểm thử tích hợp cho nhà cung cấp nội dung của mình, bạn phải thực hiện các bước sau các bước:
- Tạo lớp kiểm thử làm lớp con của
ProviderTestCase2
. - Chỉ định lớp
AndroidJUnitRunner
mà AndroidX Test cung cấp làm trình chạy kiểm thử mặc định. - Đặt đối tượng
Context
từ lớpApplicationProvider
. Xem đoạn mã dưới đây làm ví dụ.
Kotlin
@Throws(Exception::class) override fun setUp() { super.setUp() context = ApplicationProvider.getApplicationContext<Context>() }
Java
@Override protected void setUp() throws Exception { super.setUp(); setContext(ApplicationProvider.getApplicationContext()); }
Cách hoạt động của ProviderTestCase2
Bạn kiểm thử một trình cung cấp bằng một lớp con của ProviderTestCase2
. Lớp cơ sở này
mở rộng AndroidTestCase
, vì vậy, tuỳ chọn này cung cấp khung kiểm thử JUnit dưới dạng
cũng như các phương pháp dành riêng cho Android để kiểm tra quyền cho ứng dụng. Nhiều nhất
đặc điểm quan trọng của lớp này là khởi chạy, tạo
môi trường thử nghiệm tách biệt.
Khởi chạy
Quá trình khởi chạy được thực hiện trong hàm khởi tạo cho ProviderTestCase2
,
mà lớp con gọi trong hàm khởi tạo của chính chúng. ProviderTestCase2
hàm khởi tạo sẽ tạo một đối tượng IsolatedContext
cho phép tệp và
các hoạt động cơ sở dữ liệu nhưng giả lập các hoạt động tương tác khác với hệ thống Android.
Bản thân các thao tác với tệp và cơ sở dữ liệu diễn ra trong một thư mục
cục bộ trên thiết bị hoặc trình mô phỏng và có tiền tố đặc biệt.
Sau đó, hàm khởi tạo sẽ tạo một MockContentResolver
để dùng làm trình phân giải
cho bài kiểm thử.
Cuối cùng, hàm khởi tạo tạo một thực thể của trình cung cấp đang được kiểm thử. Đây là
một đối tượng ContentProvider
bình thường nhưng sẽ lấy tất cả môi trường
khỏi IsolatedContext
, nên chỉ có thể hoạt động trong
môi trường thử nghiệm tách biệt. Tất cả các hoạt động kiểm thử được thực hiện trong lần chạy lớp trường hợp kiểm thử
dựa trên đối tượng tách biệt này.
Bạn chạy kiểm thử tích hợp cho nhà cung cấp nội dung theo cách giống như được đo lường kiểm thử đơn vị.
Nội dung cần kiểm thử
Dưới đây là một số nguyên tắc cụ thể cho việc thử nghiệm nhà cung cấp nội dung.
- Kiểm thử bằng phương thức trình phân giải: Mặc dù bạn có thể tạo thực thể cho một trình cung cấp
đối tượng
trong
ProviderTestCase2
, bạn phải luôn kiểm thử với đối tượng trình phân giải bằng cách sử dụng URI thích hợp. Việc này giúp đảm bảo rằng bạn đang kiểm thử nhà cung cấp bằng cách thực hiện cùng một tương tác mà ứng dụng thông thường sẽ sử dụng. - Thử nghiệm một nhà cung cấp công khai dưới dạng hợp đồng: Nếu bạn dự định sẽ trở thành nhà cung cấp đó
công khai và khả dụng cho các ứng dụng khác, bạn nên thử nghiệm dưới dạng hợp đồng.
Sau đây là một số ví dụ về cách thực hiện việc này:
- Kiểm thử bằng các hằng số mà nhà cung cấp của bạn cho thấy công khai. Ví dụ: xem cho các hằng số tham chiếu đến tên cột thuộc một trong các bảng dữ liệu của trình cung cấp. Các biến này phải luôn là hằng số do trình cung cấp xác định công khai.
- Kiểm thử tất cả các URI mà nhà cung cấp của bạn cung cấp. Nhà cung cấp của bạn có thể đưa ra URI, mỗi URI tham chiếu đến một khía cạnh khác của dữ liệu.
- Kiểm tra URI không hợp lệ. Phương thức kiểm thử đơn vị nên có chủ ý gọi nhà cung cấp bằng
URI không hợp lệ và tìm lỗi. Để thiết kế một trình cung cấp tốt, hãy gửi một
IllegalArgumentException
cho các URI không hợp lệ.
- Kiểm thử các hoạt động tương tác tiêu chuẩn của nhà cung cấp: Hầu hết các nhà cung cấp đều cung cấp 6 quyền truy cập
các phương thức:
query()
,insert()
,delete()
,update()
,getType()
vàonCreate()
. Kiểm thử của bạn cần xác minh rằng tất cả các phương thức này đều hoạt động. - Kiểm thử logic kinh doanh: Nếu nhà cung cấp nội dung triển khai logic kinh doanh, bạn nên kiểm tra nó. Logic nghiệp vụ bao gồm việc xử lý các giá trị không hợp lệ, thông tin tài chính hoặc các phép tính số học, loại bỏ hoặc kết hợp các bản sao.