Viết bài kiểm tra không cần thiết bị phía máy chủ trong TF

Trang này cho bạn biết cách viết bài kiểm tra phía máy chủ không yêu cầu thiết bị, chẳng hạn như bài kiểm tra chạy trên phiên bản Linux GCE. (Để biết chi tiết về cách viết bài kiểm tra dựa trên máy chủ yêu cầu thiết bị, hãy tham khảo Viết bài kiểm tra dựa trên máy chủ trong Liên đoàn Thương mại .)

Các loại thử nghiệm phía máy chủ

Bạn có thể chạy một số loại thử nghiệm phía máy chủ thông qua Liên đoàn Thương mại (TF).

Kiểm tra gốc (gtest)

Tạo các bài kiểm tra gốc (gtests) để kiểm tra nền tảng. Nếu thử nghiệm không yêu cầu thiết bị, hãy chạy thử nghiệm trên máy chủ; bài kiểm tra sẽ chạy nhanh hơn nhiều theo cách đó. Để định cấu hình các thử nghiệm như vậy để chạy trên máy chủ thử nghiệm, hãy sử dụng TF Á hậu HostGTest .

Đây là cấu hình thử nghiệm TradeFed mẫu:

<configuration description="Runs hello_world_test.">
    <option name="null-device" value="true" />
    <test class="com.android.tradefed.testtype.HostGTest" >
        <option name="module-name" value="hello_world_test" />
    </test>
</configuration>

Cấu hình thử nghiệm chạy thử nghiệm gtest ( hello_world_test ) trên máy chủ. Cấu hình thử nghiệm ví dụ có thể được tạo tự động. Trừ khi thử nghiệm của bạn cần thiết lập hoặc dọn dẹp đặc biệt, bạn có thể dựa vào việc tạo cấu hình thử nghiệm tự động để tạo cấu hình thử nghiệm TF thích hợp.

Để định cấu hình gtest phía máy chủ và bật tự động tạo cấu hình kiểm tra, hãy đặt host_supported thành true trong Android.bp , như trong hello_world_test .

Để biết thêm thông tin về cách viết bài kiểm tra gốc, hãy xem Thêm ví dụ về bài kiểm tra gốc mới .

Kiểm tra máy chủ JAR

Kiểm thử máy chủ JAR (Java) , chẳng hạn như JUnit, là các kiểm thử không cần chạy trên thiết bị và cung cấp phạm vi mã cho dự án Java của bạn. Những thử nghiệm như vậy có thể được cấu hình để chạy trên máy chủ thử nghiệm bằng cách sử dụng HostTest .

Cấu hình thử nghiệm mẫu TradeFed

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

Cấu hình thử nghiệm chạy thử nghiệm JUnit phía máy chủ của HelloWorldHostTest . Lưu ý rằng cấu hình thử nghiệm ở trên có thể được tạo tự động. Trừ khi thử nghiệm của bạn cần thiết lập hoặc dọn dẹp đặc biệt, hãy dựa vào việc tạo cấu hình thử nghiệm tự động để tạo cấu hình thử nghiệm TradeFed phù hợp.

Để biết thêm chi tiết về cách viết bài kiểm tra máy chủ JAR, hãy tham khảo trang Kiểm tra máy chủ JAR (Java) .

Kiểm tra máy chủ Java bị cô lập

Các thử nghiệm Java không cần thiết bị có thể được chạy trong môi trường biệt lập với chi phí hiệu năng thấp. Tuy nhiên, có một số cân nhắc chính cần được thực hiện trước khi chọn sử dụng môi trường này.

  • Đây là trình chạy mặc định được sử dụng cho các bài kiểm tra đơn vị Robolectric và JUnit
  • Tradefed chỉ hỗ trợ các bài kiểm tra JUnit trong môi trường cách ly.
  • Chỉ hỗ trợ các phần phụ thuộc được liên kết tĩnh. Không có phần phụ thuộc nào được khai báo bằng lib được đưa vào đường dẫn lớp.
  • Trình chạy cách ly chỉ đặt trình chạy shim và bình thử nghiệm của bạn trên đường dẫn lớp.
  • Có một lượng chi phí cố định cho mỗi lần chạy thử nghiệm được thực hiện với nhân vật này.

Cấu hình thử nghiệm mẫu Tradefed (tách biệt)

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.IsolatedHostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

Cấu hình mẫu Soong để tự động tạo

Thay vì tạo cấu hình thử nghiệm theo cách thủ công như trên , Soong có thể tự động tạo cấu hình bằng cách sử dụng khai báo như ví dụ này.

java_test_host {
    name: "HelloWorldHostTest",

    test_options: {
        unit_test: true,
    },

    test_suites: ["general-tests"],

    srcs: ["test/**/*.java"],

    static_libs: [
        "junit",
    ],
}

Kiểm tra điện robot

Các thử nghiệm Robolectric sử dụng cùng một bước chạy như các thử nghiệm máy chủ bị cô lập, với một số tùy chọn đặc biệt.

  • Tùy chọn robolectric-resources cho phép một số tùy chọn dòng lệnh dành riêng cho Robolectric được chuyển vào quy trình con cũng như thêm bản dựng cây của android-all vào đường dẫn lớp của quy trình con. Mặc dù hai tùy chọn còn lại là các phương pháp hay nhất, nhưng tùy chọn này là bắt buộc để chạy thử nghiệm Robolectric thành công.
  • Tùy chọn java-folder cho phép thay đổi thời gian chạy Java được sử dụng bởi quy trình con. Điều này là cần thiết do Robolectric ưu tiên các phiên bản Java cụ thể có thể không phù hợp với JVM ưa thích của hệ thống máy chủ.
  • Tùy chọn exclude-paths cho phép trình chạy quy trình con tránh tải các mô-đun cụ thể, điều này rất hữu ích khi JAR đi kèm với các lớp không liên quan có thể gây ra lỗi tải. java. là một loại trừ phổ biến, để tránh đưa ra các ngoại lệ SecurityException .

Cấu hình Robolectric mẫu

<configuration description="Executes a Sample Robolectric Test">
    <option name="java-folder" value="prebuilts/jdk/jdk9/linux-x86/" />
    <option name="exclude-paths" value="java" />
    <option name="use-robolectric-resources" value="true" />
    <test class="com.android.tradefed.testtype.IsolatedHostTest">
        <option name="jar" value="RobolectricExampleTest.jar" />
    </test>
</configuration>

Cấu hình mẫu Soong cho quá trình tự động tạo Robolectric

Thay vì tạo cấu hình thử nghiệm theo cách thủ công như trên , Soong có thể tự động tạo cấu hình bằng cách sử dụng khai báo như ví dụ này.

android_robolectric_test {
    name: "HelloWorldRoboTest",
    srcs: [
        "src/**/*.java",
    ],

    // Include the testing libraries
    static_libs: [
        "mockito-robolectric-prebuilt",
        "platform-test-annotations",
        "testng",
        "truth-prebuilt",
    ],

    instrumentation_for: "HelloWorldApp",
}

Kiểm tra Python

Nếu logic kiểm tra được viết bằng Python, hãy sử dụng loại xây dựng python_test_host để tạo tệp par có thể được chạy bởi TF PythonBinaryHostTest .

Cấu hình thử nghiệm mẫu TradeFed

<configuration description="Config to run atest unittests">
    <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" >
        <option name="par-file-name" value="atest_unittests" />
        <option name="test-timeout" value="2m" />
    </test>
</configuration>

Cài đặt bộ thử nghiệm

Để TF có thể truy cập thử nghiệm phía máy chủ đối với một bản dựng nhất định, hãy đặt cài đặt `test_suites` của mô-đun thử nghiệm thành `general-tests` :

test_suites: ["general-tests"],

Với cài đặt này, bài kiểm tra được đóng gói thành general-tests.zip trên mục tiêu test_suites .