Multiprocess Espresso

Khi ứng dụng của bạn phát triển, bạn có thể thấy hữu ích khi đặt một số thành phần ứng dụng của mình trong một quy trình khác với quy trình chính của ứng dụng. Để kiểm thử các thành phần ứng dụng trong các quy trình không mặc định, thì bạn có thể sử dụng chức năng của Multiprocess Espresso. Công cụ này có trên Android 8.0 (API cấp 26) trở lên, cho phép bạn kiểm thử liền mạch các hoạt động tương tác trên giao diện người dùng của ứng dụng xuyên suốt quy trình của ứng dụng trong khi vẫn duy trì đảm bảo đồng bộ hoá của Espresso.

Khi sử dụng Espresso đa xử lý, hãy giữ nguyên phiên bản và phạm vi như sau những điều cần cân nhắc:

  • Ứng dụng của bạn phải nhắm đến Android 8.0 (API cấp 26) trở lên.
  • Công cụ này chỉ có thể kiểm thử các thành phần ứng dụng mà bạn đưa vào các quy trình trong gói ứng dụng của bạn. Công cụ này không thể kiểm thử các quy trình bên ngoài.

Sử dụng công cụ

Để kiểm thử một quy trình trong ứng dụng bằng Multiprocess Espresso, hãy thêm một tệp tham chiếu vào cấu phần phần mềm espresso-remote trong tệp build.gradle của ứng dụng:

app/build.gradle

Groovy

dependencies {
    ...
    androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1'
}

Kotlin

dependencies {
    ...
    androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1')
}

Bạn cũng cần thêm đoạn mã sau vào tệp kê khai androidTest của ứng dụng:

  • Một phần tử <instrumentation> xác định quy trình.
  • Một phần tử <meta-data> cho biết bạn muốn sử dụng Espresso đa xử lý.

Đoạn mã sau đây cho biết cách thêm các thành phần này:

src/androidTest/AndroidManifest.xml

<manifest ... package="androidx.test.mytestapp.tests">
  <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" />
  <instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:targetPackage="androidx.test.mytestapp"
    android:targetProcesses="*">
    <meta-data
      android:name="remoteMethod"
      android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" />
  </instrumentation>
</manifest>

Đoạn mã trước đó cho khung Android biết rằng bạn muốn đoạn mã đó kiểm thử mọi quy trình trong gói ứng dụng của bạn. Nếu bạn chỉ muốn thử nghiệm một nhóm nhỏ của ứng dụng, bạn có thể chỉ định danh sách được phân tách bằng dấu phẩy trong Thay vào đó, phần tử targetProcesses:

<instrumentation
    ...
    android:targetProcesses=
            "androidx.test.mytestapp:myFirstAppProcessToTest,
             androidx.test.mytestapp:mySecondAppProcessToTest" ... />

Tìm hiểu cấu trúc của công cụ

Khi kiểm thử ứng dụng và khởi chạy quy trình mặc định của ứng dụng, bạn có thể triển khai giao diện người dùng tương tác, chẳng hạn như nhấn nút, để bắt đầu một hoạt động trong của chúng tôi. Sau đó, hệ thống sẽ hoàn tất các bước sau đây để bật nhiều quy trình kiểm thử bằng Espresso:

  1. Khung Android tạo và bắt đầu một quy trình mới để tuân thủ cấu trúc điều hướng. Mỗi quy trình Instrumentation bao gồm một phiên bản mới của AndroidJUnitRunner. Ở giai đoạn này, 2 quy trình đo lường không thể giao tiếp với từng quy trình khác.
  2. Một AndroidJUnitRunner thực thể đăng ký Espresso làm khung kiểm thử.
  3. 2 trường hợp của AndroidJUnitRunner thực hiện bắt tay để thiết lập kết nối với nhau. Bằng thời gian, mỗi AndroidJUnitRunner thực thể này kết nối tất cả ứng dụng đã đăng ký như Espresso với ứng dụng tương ứng đối tác trong các quy trình khác để những khách hàng này có thể tạo thành kênh giao tiếp giữa chúng.
  4. Mỗi AndroidJUnitRunner tiếp tục tìm kiếm các thực thể đo lường và kiểm thử mới được thêm vào khách hàng khung, thiết lập các kênh liên lạc bổ sung khi cần.

Hình 1 minh hoạ kết quả của quá trình này:

Hình 1. Thiết lập liên lạc giữa nhiều các quy trình đo lường bằng Espresso đa xử lý

Tài nguyên khác

Để biết thêm thông tin về chủ đề này, hãy tham khảo các tài nguyên sau.