Nếu đang triển khai Service
cục bộ làm một thành phần của ứng dụng, bạn
có thể tạo kiểm thử đo lường để xác minh hành vi của mã là chính xác.
Kiểm thử AndroidX cung cấp một API để kiểm thử các đối tượng Service
trong
tách biệt. Lớp ServiceTestRule
là quy tắc JUnit 4 sẽ bắt đầu
trước khi các phương thức kiểm thử đơn vị chạy và tắt dịch vụ sau
thử nghiệm hoàn tất. Để tìm hiểu thêm về quy tắc JUnit 4, hãy xem JUnit
.
Thiết lập môi trường thử nghiệm
Trước khi xây dựng thử nghiệm tích hợp cho dịch vụ, hãy nhớ định cấu hình dự án của bạn cho các kiểm thử đo lường, như được mô tả trong Thiết lập dự án cho Kiểm thử AndroidX.
Tạo chương trình kiểm thử tích hợp cho các dịch vụ
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 lớp kiểm thử JUnit 4 và sử dụng phương thức xác nhận JUnit 4, hãy xem Tạo lớp kiểm thử đo lường.
Tạo một thực thể ServiceTestRule
trong kiểm thử của bạn bằng cách sử dụng @Rule
của bạn.
Kotlin
@get:Rule val serviceRule = ServiceTestRule()
Java
@Rule public final ServiceTestRule serviceRule = new ServiceTestRule();
Ví dụ sau đây trình bày cách bạn có thể triển khai kiểm thử tích hợp cho một
. Phương thức kiểm thử testWithBoundService()
xác minh rằng ứng dụng liên kết
thành công với dịch vụ cục bộ và giao diện dịch vụ hoạt động
chính xác.
Kotlin
@Test @Throws(TimeoutException::class) fun testWithBoundService() { // Create the service Intent. val serviceIntent = Intent( ApplicationProvider.getApplicationContext<Context>(), LocalService::class.java ).apply { // Data can be passed to the service via the Intent. putExtra(SEED_KEY, 42L) } // Bind the service and grab a reference to the binder. val binder: IBinder = serviceRule.bindService(serviceIntent) // Get the reference to the service, or you can call // public methods on the binder directly. val service: LocalService = (binder as LocalService.LocalBinder).getService() // Verify that the service is working correctly. assertThat(service.getRandomInt(), `is`(any(Int::class.java))) }
Java
@Test public void testWithBoundService() throws TimeoutException { // Create the service Intent. Intent serviceIntent = new Intent(ApplicationProvider.getApplicationContext(), LocalService.class); // Data can be passed to the service via the Intent. serviceIntent.putExtra(LocalService.SEED_KEY, 42L); // Bind the service and grab a reference to the binder. IBinder binder = serviceRule.bindService(serviceIntent); // Get the reference to the service, or you can call // public methods on the binder directly. LocalService service = ((LocalService.LocalBinder) binder).getService(); // Verify that the service is working correctly. assertThat(service.getRandomInt()).isAssignableTo(Integer.class); }
Tài nguyên khác
Để tìm hiểu thêm về chủ đề này, hãy tham khảo thêm các tài nguyên sau đây.