Cấu hình thử nghiệm phức tạp

Một số mô-đun thử nghiệm có thể yêu cầu các bước thiết lập và chia nhỏ tùy chỉnh không thể thực hiện được trong chính trường hợp thử nghiệm. Các ví dụ điển hình có thể bao gồm:

  • cài đặt các apks khác (ngoài apk thử nghiệm)
  • đẩy một số tập tin vào thiết bị
  • chạy lệnh (ví dụ adb shell pm ...)

Trước đây, các nhóm thành phần thường viết bài kiểm tra phía máy chủ để thực hiện các nhiệm vụ như vậy, đòi hỏi sự hiểu biết về khai thác của Liên đoàn Thương mại và thường làm tăng độ phức tạp của mô-đun kiểm tra.

Mượn từ CTS, chúng tôi đã giới thiệu khái niệm cấu hình mô-đun thử nghiệm để hỗ trợ các tác vụ như vậy, danh sách tác vụ chung ở trên có thể đạt được chỉ bằng một vài dòng cấu hình. Để linh hoạt tối đa, bạn thậm chí có thể triển khai trình chuẩn bị mục tiêu của riêng mình, như được xác định bởi ITargetPreparer hoặc ITargetCleaner và định cấu hình chúng để sử dụng trong cấu hình mô-đun thử nghiệm của riêng bạn.

Cấu hình mô-đun thử nghiệm cho mô-đun thử nghiệm là tệp XML bắt buộc được thêm vào thư mục nguồn mô-đun cấp cao nhất, có tên là 'AndroidTest.xml'. XML tuân theo định dạng của tệp cấu hình được khai thác tự động hóa thử nghiệm của Liên đoàn Thương mại sử dụng. Hiện tại, các thẻ chính được xử lý thông qua cấu hình mô-đun thử nghiệm là thẻ “target_preparer” và thẻ "test".

Người chuẩn bị mục tiêu

Thẻ “target_preparer”, như tên gợi ý, xác định trình chuẩn bị mục tiêu (xem ITargetPreparer ) cung cấp phương thức thiết lập, được gọi trước khi mô-đun kiểm tra được thực thi để kiểm tra; và nếu lớp được tham chiếu trong thẻ “target_preparer” cũng triển khai ITargetCleaner thì phương thức phân tách của nó sẽ được gọi sau khi mô-đun thử nghiệm kết thúc.

Để sử dụng cấu hình mô-đun chung được tích hợp sẵn, hãy thêm tệp mới 'AndroidTest.xml' vào thư mục cấp cao nhất cho mô-đun thử nghiệm của bạn và điền nội dung sau vào đó:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

Ví dụ: chúng ta có thể thêm các thẻ tùy chọn sau (tại phần nhận xét “chèn” ở trên):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

Các tùy chọn sẽ cấu hình khai thác thử nghiệm để:

  1. trước khi mô-đun kiểm tra được gọi, hãy thực thi lệnh shell “settings put safe access_enabled 1” trên thiết bị
  2. sau khi mô-đun kiểm tra kết thúc, hãy thực thi lệnh shell “settings put safe access_enabled 0”

Trong ví dụ cụ thể này, khả năng truy cập được bật/tắt tương ứng trước/sau khi thực hiện mô-đun thử nghiệm. Với một ví dụ đơn giản được minh họa, cần trình bày thêm chi tiết về cách sử dụng thẻ “tùy chọn”. Như được hiển thị ở trên, thẻ có thể có hai thuộc tính: tên, giá trị. Thuộc tính tên phải tham chiếu đến một trong các tùy chọn được người chuẩn bị đưa ra.

Mục đích chính xác của trường giá trị phụ thuộc vào cách người chuẩn bị xác định tùy chọn: nó có thể là một chuỗi, một số, một boolean hoặc thậm chí là một đường dẫn tệp. Dưới đây là bản tóm tắt về ba người chuẩn bị mục tiêu phổ biến:

  • tên lớp: PushFilePreparer

    • tên viết tắt : push-file
    • chức năng : đẩy các tập tin tùy ý trong thư mục test case vào đích trên thiết bị
    • ghi chú :
      • trình chuẩn bị này có thể đẩy từ thư mục này sang thư mục khác hoặc tập tin này sang tập tin khác; nghĩa là bạn không thể đẩy tệp vào một thư mục trên thiết bị: bạn cũng phải chỉ định tên tệp đích trong thư mục đó
    • tùy chọn :
      • push-file: Thông số đẩy, chỉ định tệp cục bộ vào đường dẫn nơi nó sẽ được đẩy trên thiết bị. Có thể được lặp đi lặp lại. Nếu nhiều tệp được định cấu hình để được đẩy đến cùng một đường dẫn từ xa, thì tệp mới nhất sẽ được đẩy.
      • push: (không dùng nữa) Thông số đẩy, được định dạng là ' /path/to/srcfile.txt->/path/to/destfile.txt ' hoặc ' /path/to/srcfile.txt->/path/to/destdir/ '. Có thể được lặp đi lặp lại. Đường dẫn này có thể liên quan đến thư mục mô-đun thử nghiệm hoặc chính thư mục bên ngoài.
      • post-push: Một lệnh chạy trên thiết bị (với ` adb shell <your command> `) sau khi tất cả các lần đẩy đã được thử. Trường hợp sử dụng điển hình sẽ là sử dụng chmod để cấp quyền
  • tên lớp: InstallApkSetup

    • tên viết tắt: cài đặt-apk
    • chức năng: đẩy các tập tin apk tùy ý vào đích trên thiết bị
    • tùy chọn:
      • test-file-name: tên của apk sẽ được cài đặt trên thiết bị.
      • install-arg: Các đối số bổ sung được chuyển tới lệnh pm install, bao gồm dấu gạch ngang ở đầu, ví dụ: “-d”. Có thể được lặp lại
  • tên lớp: RunCommandTargetPreparer

    • tên viết tắt: lệnh chạy
    • chức năng: thực thi các lệnh shell tùy ý trước hoặc sau khi thực hiện mô-đun thử nghiệm
    • tùy chọn:
      • lệnh run: lệnh adb shell để chạy. Có thể được lặp đi lặp lại
      • lệnh xé nát: lệnh shell adb để chạy trong giai đoạn xé nát. Có thể được lặp đi lặp lại

Lớp kiểm tra

Lớp kiểm tra là lớp Liên đoàn Thương mại được sử dụng để thực hiện bài kiểm tra.

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

Dưới đây là ba lớp kiểm tra phổ biến:

  • Tên lớp: GTest

    • tên viết tắt: gtest
    • chức năng: Thử nghiệm chạy gói thử nghiệm gốc trên thiết bị nhất định.
    • tùy chọn:
      • Native-test-device-path: Đường dẫn trên thiết bị chứa các bài kiểm tra gốc.
  • Tên lớp: InstrumentationTest

    • Tên viết tắt: thiết bị đo đạc
    • chức năng: Thử nghiệm chạy gói thử nghiệm thiết bị đo đạc trên thiết bị nhất định
    • tùy chọn:
      • gói: Tên gói kê khai của ứng dụng thử nghiệm Android sẽ chạy.
      • class: Tên lớp kiểm tra sẽ chạy.
      • phương thức: Tên phương thức thử nghiệm để chạy.
  • tên lớp: AndroidJUnitTest

    • chức năng: Thử nghiệm chạy gói thử nghiệm thiết bị đo lường trên thiết bị nhất định bằng cách sử dụng android.support.test.runner.AndroidJUnitRunner Đây là cách chính để thực hiện thử nghiệm thiết bị đo lường.