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 lượt xem với onView của Espresso và các phần tử Compose có 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 qua UiAutomator bằng mô tả thuận tiện (văn bản hiển thị, mô tả nội dung, v.v.). Nếu bạn muốn để truy cập 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 thành phần kết hợp cụ thể cây con. Việc bật hành vi này sẽ hữu ích cho các thành phần kết hợp không có một tên người dùng duy nhất khác, chẳng hạn như 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 cao 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 ghép với Modifier.testTag đều có thể truy cập được từ 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
    }
}

Mọi thành phần kết hợp với Modifier.testTag(tag) đều có thể truy cập được khi sử dụng của By.res(resourceName) bằng cách sử dụng cùng 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: Kiểm thử chính trên Android trang đích cung cấp cái nhìn rộng hơn về các nguyên tắc và kỹ thuật thử nghiệm.
  • Nguyên tắc cơ bản về việc kiểm thử: Tìm hiểu thêm về các khái niệm chính của việc kiểm thử ứng dụng Android.
  • Kiểm thử cục bộ: Bạn có thể chạy một số kiểm thử trên máy trạm của riêng bạn.
  • Kiểm thử đo lường: Kết quả này phù hợp để chạy cả các kiểm thử đo lường. Tức là các thử nghiệm chạy trực tiếp trên thiết bị.
  • Tích hợp liên tục: Khả năng tích hợp liên tục giúp bạn tích hợp các bài kiểm thử vào hoạt động triển khai quy trình.
  • Thử nghiệm nhiều kích thước màn hình: Bằng một số thiết bị có sẵn cho người dùng, bạn nên thử nghiệm các màn hình khác nhau kích thước.
  • Espresso: Mặc dù dành cho phương pháp dựa trên Khung hiển thị Giao diện người dùng, kiến thức về Espresso vẫn có thể hữu ích cho một số khía cạnh của Compose kiểm thử.