Kiểm thử đơn vị bằng Glance

API kiểm thử đơn vị Glance cho phép bạn kiểm thử mã Glance mà không cần tăng cường khung hiển thị hoặc cần có trình tự động hoá giao diện người dùng. Ví dụ: API kiểm thử đơn vị cho phép bạn xác minh các điều kiện, chẳng hạn như các phần tử có nằm trong danh sách hay các hộp đã được đánh dấu hay chưa, bằng cách sử dụng các trình so khớp như hasContentDescriptionEqualTo hoặc isChecked.

API này gọn nhẹ và cần ít thiết lập hơn. Vì vậy, bạn có thể phát triển dựa trên thử nghiệm trong quá trình phát triển từng thành phần tiện ích và sắp xếp các tiện ích đó để cải thiện việc sử dụng lại mã.

Thiết lập

Bạn có thể thấy các phần phụ thuộc cần thiết để sử dụng thư viện kiểm thử đơn vị trong các ví dụ sau:

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.

Kiểm thử cấu trúc

Sắp xếp các hàm có khả năng kết hợp bên ngoài lớp GlanceAppWidget để cho phép sử dụng lại mã và kiểm thử đơn vị. Hãy giảm độ phức tạp của các đơn vị đang kiểm thử nhiều nhất có thể.

class MyGlanceComposableTest {
    @Test
    fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
        // Prepare inputs and state
        setAppWidgetSize(100.dp, 100.dp)

        // Set the composable under test
        provideComposable {
            MyNewsItemComposable(TEST_NEWS_ITEM)
        }

        // Perform assertions
        onNode(hasTestTag("subTitle"))
            .assertHasText(TEST_NEWS_ITEM.authorName)
    }
}

Đặt bối cảnh và quy mô cho kiểm thử

Nếu hàm có khả năng kết hợp đọc ngữ cảnh bằng phương thức LocalContext.current(), thì bạn phải đặt ngữ cảnh bằng phương thức LocalContext.current(). Nếu không, bước này là bước không bắt buộc.

Bạn có thể sử dụng bất kỳ khung kiểm thử đơn vị Android dựa trên JVM nào, chẳng hạn như Roboletric, để cung cấp ngữ cảnh.

Nếu hàm có khả năng kết hợp của bạn truy cập vào LocalSize, hãy đặt kích thước dự kiến cho kiểm thử trước khi cung cấp một thành phần kết hợp trong kiểm thử. Kích thước mặc định là 349 dp x 455 dp, tương đương với tiện ích 5x4 hiện trên thiết bị Pixel 4 ở chế độ dọc.

  • Nếu AppWidget sử dụng sizeMode == Single, bạn có thể đặt giá trị này thành minWidthminHeight trong tệp info.xml của tiện ích.
  • Nếu AppWidget sử dụng sizeMode == Exact, bạn có thể xác định kích thước cần kiểm thử theo cách tương tự như cách bạn xác định kích thước cho tiện ích, đồng thời xác định kích thước ngang và dọc mà tiện ích có thể xuất hiện trên đó và kiểm thử các kích thước đó.
  • Nếu AppWidget sử dụng sizeMode == Responsive, bạn có thể đặt kích thước này thành một trong các kích thước trong danh sách mà bạn cung cấp khi chỉ định sizeMode.

Thời lượng mặc định cho thời gian chờ kiểm thử là 1 giây, nhưng bạn có thể chuyển một thời lượng tuỳ chỉnh làm đối số cho phương thức runGlanceAppWidgetUnitTest nếu cơ sở hạ tầng kiểm thử của bạn thực thi một thời gian chờ khác.

Để biết thêm thông tin và mã mẫu, hãy xem tài liệu tham khảo cho runGlanceAppWidgetUnitTest.