Tự động hoá việc quản lý thiết bị ảo bằng các quy tắc kiểm thử được chiếu

projectedtestrule, quản lý thiết bị ảo

Các thiết bị XR được hỗ trợ
Hướng dẫn này giúp bạn xây dựng các trải nghiệm cho những loại thiết bị XR sau.
Kính âm thanh và
kính hiển thị

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ăngtrạ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ư isDeviceConnected về 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ư capabilities về 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.