Rất khó để tự động hoá các bài kiểm thử khi mã phụ thuộc vào phần cứng thực. Ví dụ: bạn có thể cần kết nối và ngắt kết nối thiết bị thực theo cách thủ công để xác minh trạng thái kết nối. Với tất cả các loại khác nhau, khả năng, và trạng thái thiết bị của kính phát âm thanh và kính có màn hình, thách thức này có thể trở nên phức tạp hơn. Để kiểm thử cho nhiều trường hợp, hãy sử dụng API Quy tắc kiểm thử được chiếu để tự động hoá việc thiết lập và quản lý môi trường thử nghiệm được chiếu. Thư viện này xử lý việc tạo thiết bị được chiếu, trạng thái kết nối và xác minh khả năng, vì vậy, bạn có thể tập trung vào việc kiểm thử logic cốt lõi của ứng dụng. Hãy sử dụng các API này để tạo bộ kiểm thử mạnh mẽ mà không cần viết mã soạn sẵn.
Thêm phần phụ thuộc thư viện
Để sử dụng quy tắc kiểm thử, hãy thêm cấu phần phần mềm kiểm thử vào tệp build.gradle của ứng dụng:
Groovy
dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}
Kotlin
dependencies {
// JXR Projected testing library
testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}
Thiết lập quy tắc kiểm thử
Để thiết lập quy tắc kiểm thử cơ bản, hãy chú thích quy tắc trong lớp kiểm thử. Theo mặc định, quy tắc này kết nối một thiết bị được chiếu và bật các tính năng hình ảnh của thiết bị đó trước khi mỗi bài kiểm thử được chạy.
@get:Rule val projectedTestRule = ProjectedTestRule() private val context: Context get() = ApplicationProvider.getApplicationContext() @Test fun testWithConnectedDevice() { val projectedContext = ProjectedContext.createProjectedDeviceContext(context) assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue() }
Kiểm thử các trường hợp phổ biến khác
Giờ đây, bạn đã thiết lập môi trường thử nghiệm được chiếu bằng quy tắc kiểm thử cơ bản, hãy kiểm thử các trường hợp phổ biến khác cho kính phát âm thanh và kính có màn hình để xác minh chức năng của ứng dụng.
Kiểm thử việc ngắt kết nối thiết bị thử nghiệm
Để kiểm thử cách ứng dụng phản ứng khi kết nối với kính bị mất, hãy sử dụng thuộc tính isDeviceConnected:
@Test fun testDeviceDisconnection() { // manually disconnect the device via the rule projectedTestRule.isDeviceConnected = false assertThrows(IllegalStateException::class.java) { ProjectedContext.createProjectedDeviceContext(context) } }
Các điểm chính về mã
- Quy tắc này đặt lại các thuộc tính như
isDeviceConnectedvề giá trị mặc định trước mỗi bài kiểm thử. Bạn không cần đặt lại các thuộc tính này theo cách thủ công trong các phương thức@After.
Kiểm thử các tính năng của thiết bị
Kính có màn hình có thể hiển thị giao diện người dùng được tạo bằng Jetpack Compose Glimmer. Theo mặc định, ProjectedTestRule sẽ bật CAPABILITY_VISUAL_UI. Để xác định chính xác những gì thiết bị được chiếu hỗ trợ, hãy sử dụng tập hợp capabilities. Điều này rất hữu ích để xác minh rằng ứng dụng của bạn kiểm tra chính xác khả năng hỗ trợ phần cứng trước khi cố gắng chiếu nội dung lên kính.
@Test fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity -> // disable display capability projectedTestRule.capabilities = setOf() runBlocking { // create the controller val controller = ProjectedDeviceController.create(activity) // verify the app recognizes the lack of visual UI support assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI) } }
Các điểm chính về mã
- Quy tắc này đặt lại các thuộc tính như
capabilitiesvề giá trị mặc định trước mỗi bài kiểm thử. Bạn không cần đặt lại các thuộc tính này theo cách thủ công trong các phương thức@After. - Khi bạn cần xác minh hành vi cụ thể cho một hoạt động được chiếu lên kính có màn hình, hãy sử dụng
launchTestProjectedDeviceActivity.