Kiểm thử bố cục Compose

Kiểm thử giao diện người dùng của ứng dụng để xác minh rằng hành vi của mã Compose là chính xác. Việc này cho phép bạn sớm phát hiện lỗi và cải thiện chất lượng ứng dụng.

Compose cung cấp một tập hợp các API kiểm thử để tìm các phần tử, xác minh thuộc tính của các phần tử đó và thực hiện các thao tác của người dùng. Các API này cũng bao gồm các tính năng nâng cao như thao tác thời gian. Hãy sử dụng các API này để tạo các chương trình kiểm thử mạnh mẽ giúp xác minh hành vi của ứng dụng.

Số lượt xem

Nếu bạn đang làm việc với khung hiển thị thay vì Compose, hãy xem phần Kiểm thử ứng dụng trên Android chung.

Cụ thể, bạn nên bắt đầu bằng hướng dẫn Tự động kiểm thử giao diện người dùng. Tài liệu này trình bày cách tự động hoá các thử nghiệm chạy trên thiết bị, bao gồm cả khi sử dụng khung hiển thị.

Khái niệm chính

Sau đây là một số khái niệm chính để kiểm thử mã Compose.

  • Ngữ nghĩa: Các bài kiểm thử Compose tương tác với giao diện người dùng thông qua ngữ nghĩa, cung cấp ý nghĩa cho các phần của giao diện người dùng và được tạo cùng với hệ phân cấp giao diện người dùng.
  • Kiểm thử API: Compose cung cấp các API kiểm thử để tìm các phần tử, đưa ra nhận định về trạng thái và thuộc tính của các phần tử đó, cũng như thực hiện các hành động để mô phỏng hoạt động tương tác của người dùng.
  • Đồng bộ hoá: Theo mặc định, các hoạt động kiểm thử trong Compose sẽ tự động đồng bộ hoá với giao diện người dùng, chờ cho giao diện người dùng ở trạng thái rảnh trước khi đưa ra câu nhận định hoặc thực hiện hành động.
  • Khả năng tương tác: Trong các ứng dụng kết hợp, kiểm thử có thể tương tác liền mạch với cả thành phần Compose và thành phần dựa trên Khung hiển thị, đồng thời tích hợp với các khung kiểm thử khác.

Bản tóm tắt về kiểm thử

Hãy xem bản tóm tắt về kiểm thử để biết thông tin tổng quan về tất cả chủ đề chính mà bạn nên tìm hiểu về việc kiểm thử trong Compose.

Thiết lập

Thiết lập ứng dụng để có thể kiểm thử mã Compose.

Trước tiên, hãy thêm các phần phụ thuộc sau vào tệp build.gradle của mô-đun chứa các quy trình kiểm thử giao diện người dùng của bạn:

// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")

Mô-đun này bao gồm một ComposeTestRule và một phương thức triển khai cho Android có tên là AndroidComposeTestRule. Thông qua quy tắc này, bạn có thể thiết lập nội dung Compose hoặc truy cập hoạt động. Bạn tạo quy tắc bằng các hàm nhà máy createComposeRule hoặc createAndroidComposeRule nếu bạn cần quyền truy cập vào một hoạt động. Một quy trình kiểm thử giao diện người dùng điển hình cho Compose sẽ có dạng như sau:

// file: app/src/androidTest/java/com/package/MyComposeTest.kt

class MyComposeTest {

    @get:Rule val composeTestRule = createComposeRule()
    // use createAndroidComposeRule<YourActivity>() if you need access to
    // an activity

    @Test
    fun myTest() {
        // Start the app
        composeTestRule.setContent {
            MyAppTheme {
                MainScreen(uiState = fakeUiState, /*...*/)
            }
        }

        composeTestRule.onNodeWithText("Continue").performClick()

        composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
    }
}

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.

Lớp học lập trình

Để tìm hiểu thêm, hãy tham khảo Lớp học lập trình về Kiểm thử trong Jetpack Compose.

Mẫu