projectedtestrule, quản lý thiết bị ảo
Rất khó để tự động hoá các 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ả năng và trạng thái thiết bị của kính âm thanh và kính hiển thị, thử thách này có thể trở nên phức tạp hơn. Để kiểm thử cho nhiều trường hợp này, hãy sử dụng các 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, nhờ đó bạn có thể tập trung vào việc kiểm thử logic cốt lõi của ứng dụng. 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ã nguyên mẫu.
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 chức 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() }
Thử nghiệm 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 dự kiến bằng một 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 âm thanh và kính hiển thị để xác minh chức năng của ứng dụng.
Ngắt kết nối thiết bị thử nghiệm
Để kiểm thử cách ứng dụng của bạn phản ứng khi mất kết nối với kính, 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 lượt kiểm thử. Bạn không cần phải đặ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 chức năng của thiết bị
Kính hiển thị có thể cho thấy 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ì mà thiết bị được chiếu hỗ trợ, hãy sử dụng tập hợp capabilities. Điều này hữu ích cho việc 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 lượt kiểm thử. Bạn không cần phải đặ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 hiển thị, hãy sử dụng
launchTestProjectedDeviceActivity.