Khả năng tương tác

Compose tích hợp với các khung kiểm thử phổ biến.

Khả năng tương tác với Espresso

Trong một ứng dụng kết hợp, bạn có thể tìm thấy các thành phần Compose bên trong hệ phân cấp khung hiển thị và khung hiển thị bên trong thành phần kết hợp Compose (thông qua thành phần kết hợp AndroidView).

Không cần thực hiện bước đặc biệt nào để so khớp một trong hai loại này. Bạn so khớp các thành phần hiển thị với onView của Espresso và so khớp các thành phần Compose với ComposeTestRule.

@Test
fun androidViewInteropTest() {
    // Check the initial state of a TextView that depends on a Compose state.
    Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
    // Click on the Compose button that changes the state.
    composeTestRule.onNodeWithText("Click here").performClick()
    // Check the new value.
    Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}

Khả năng tương tác với UiAutomator

Theo mặc định, chỉ có thể truy cập các thành phần kết hợp từ UiAutomator bằng các trình mô tả tiện lợi của chúng (văn bản hiển thị, thông tin mô tả nội dung, v.v.). Nếu muốn truy cập vào bất kỳ thành phần kết hợp nào sử dụng Modifier.testTag, bạn cần bật thuộc tính ngữ nghĩa testTagsAsResourceId cho cây con của thành phần kết hợp cụ thể. Việc bật hành vi này sẽ hữu ích đối với các thành phần kết hợp không có tên người dùng riêng biệt nào khác, chẳng hạn như các thành phần kết hợp có thể cuộn (ví dụ: LazyColumn).

Chỉ bật thuộc tính ngữ nghĩa một lần ở vị trí cao nhất trong hệ phân cấp thành phần kết hợp để đảm bảo tất cả các thành phần kết hợp lồng với Modifier.testTag đều có thể truy cập được qua UiAutomator.

Scaffold(
    // Enables for all composables in the hierarchy.
    modifier = Modifier.semantics {
        testTagsAsResourceId = true
    }
){
    // Modifier.testTag is accessible from UiAutomator for composables nested here.
    LazyColumn(
        modifier = Modifier.testTag("myLazyColumn")
    ){
        // Content
    }
}

Bạn có thể truy cập vào bất kỳ thành phần kết hợp nào có Modifier.testTag(tag) bằng cách sử dụng By.res(resourceName) sử dụng cùng một tag như resourceName.

val device = UiDevice.getInstance(getInstrumentation())

val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.

Tài nguyên khác

  • Kiểm thử ứng dụng trên Android: Trang đích chính của việc kiểm thử trên Android cung cấp cái nhìn rộng hơn về các nguyên tắc và kỹ thuật kiểm thử.
  • Nguyên tắc cơ bản về kiểm thử: Tìm hiểu thêm về các khái niệm chính liên quan đến việc kiểm thử một ứng dụng Android.
  • Kiểm thử cục bộ: Bạn có thể chạy một số kiểm thử cục bộ trên máy trạm của riêng mình.
  • Kiểm thử đo lường: Bạn cũng nên chạy kiểm thử đo lường. Điều này nghĩa là các bài kiểm thử chạy trực tiếp trên thiết bị.
  • Tích hợp liên tục: Tính năng tích hợp liên tục cho phép bạn tích hợp các bài kiểm thử vào quy trình triển khai.
  • Kiểm thử nhiều kích thước màn hình: Với một số thiết bị được cung cấp cho người dùng, bạn nên kiểm thử cho nhiều kích thước màn hình.
  • Espresso: Mặc dù dành cho giao diện người dùng dựa trên Khung hiển thị, nhưng kiến thức về Espresso vẫn có thể hữu ích cho một số khía cạnh của kiểm thử Compose.