Sử dụng Espresso Device API để kiểm thử ứng dụng khi thiết bị trải qua quá trình phổ biến. thay đổi về cấu hình, chẳng hạn như xoay và mở màn hình. Espresso Device API (API Thiết bị) cho phép bạn mô phỏng các thay đổi về cấu hình này trên một thiết bị ảo và thực thi kiểm thử một cách đồng bộ, vì vậy, chỉ có một hành động hoặc câu nhận định trên giao diện người dùng xảy ra lúc và kết quả thử nghiệm sẽ đáng tin cậy hơn. Nếu bạn mới viết giao diện người dùng bằng Espresso, xem tài liệu của nó.
Để sử dụng Espresso Device API, bạn cần có:
- Android Studio Iguana trở lên
- Trình bổ trợ Android cho Gradle 8.3 trở lên
- Trình mô phỏng Android 33.1.10 trở lên
- Thiết bị ảo Android chạy API cấp 24 trở lên
Thiết lập dự án cho Espresso Device API
Để thiết lập dự án sao cho dự án hỗ trợ Espresso Device API (API Thiết bị Espresso), hãy làm như sau:
Để cho phép kiểm thử truyền các lệnh đến thiết bị thử nghiệm, hãy thêm phương thức Các quyền
INTERNET
vàACCESS_NETWORK_STATE
đối với tệp kê khai trong nhóm tài nguyênandroidTest
:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
Bật cờ thử nghiệm
enableEmulatorControl
trong Tệpgradle.properties
:android.experimental.androidTest.enableEmulatorControl=true
Bật tuỳ chọn
emulatorControl
trong bản dựng cấp mô-đun tập lệnh:Kotlin
testOptions { emulatorControl { enable = true } }
Groovy
testOptions { emulatorControl { enable = true } }
Trong tập lệnh bản dựng cấp mô-đun, hãy nhập thư viện Thiết bị Espresso vào dự án của bạn:
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:1.0.0-beta01") }
Groovy
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.0-beta01' }
Kiểm thử dựa trên các thay đổi phổ biến về cấu hình
Espresso Device API có nhiều hướng màn hình và trạng thái có thể gập lại bạn có thể sử dụng để mô phỏng các thay đổi về cấu hình thiết bị.
Kiểm thử chế độ xoay màn hình
Sau đây là ví dụ về cách kiểm thử điều gì sẽ xảy ra với ứng dụng của bạn khi màn hình thiết bị xoay:
Trước tiên, để có trạng thái khởi động nhất quán, hãy đặt thiết bị ở chế độ dọc chế độ:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
Tạo chương trình kiểm thử đặt thiết bị theo hướng ngang trong quá trình kiểm thử thực thi:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
Sau khi màn hình xoay, kiểm tra để đảm bảo rằng giao diện người dùng thích ứng với bố cục mới như dự kiến.
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
Kiểm thử khi mở màn hình
Sau đây là ví dụ về cách kiểm thử điều sẽ xảy ra với ứng dụng trên một thiết bị có thể gập lại thiết bị và màn hình mở ra:
Trước tiên, hãy kiểm thử với thiết bị ở trạng thái gập bằng cách gọi
onDevice().setClosedMode()
. Đảm bảo rằng bố cục của ứng dụng thích ứng với chiều rộng màn hình thu gọn.@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
Để chuyển sang trạng thái mở hoàn toàn, hãy gọi
onDevice().setFlatMode()
. Kiểm tra để đảm bảo bố cục của ứng dụng thích ứng với lớp kích thước mở rộng.@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
Chỉ định những thiết bị mà kiểm thử của bạn cần
Nếu bạn đang chạy một chương trình kiểm thử thực hiện thao tác gập trên một thiết bị không phải là
thiết bị có thể gập lại, thì kiểm thử có thể sẽ không thành công. Chỉ thực thi các kiểm thử có liên quan
cho thiết bị đang chạy, hãy sử dụng chú thích @RequiresDeviceMode
. Trình chạy kiểm thử
tự động bỏ qua việc chạy kiểm thử trên các thiết bị không hỗ trợ
đang được kiểm tra cấu hình. Bạn có thể thêm quy tắc về yêu cầu đối với thiết bị vào mỗi kiểm thử
hoặc toàn bộ lớp kiểm thử.
Ví dụ: để chỉ định rằng chỉ nên chạy kiểm thử trên các thiết bị hỗ trợ
mở sang một cấu hình phẳng, hãy thêm mã @RequiresDeviceMode
sau
cho thử nghiệm của bạn:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}