Viết một chương trình kiểm thử không dùng thiết bị phía máy chủ trong TF

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

Các loại kiểm thử phía máy chủ

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

Kiểm thử gốc (gtest)

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

Dưới đâ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 kiểm thử chạy quy trình kiểm thử gtest (hello_world_test) trên một máy chủ lưu trữ. Kiểm thử mẫu cấu hình có thể được tạo tự động. Trừ phi quy trình kiểm thử của bạn cần có bước thiết lập hoặc dọn dẹp đặc biệt, bạn có thể dựa vào tính năng tạo cấu hình kiểm thử tự động để tạo thử nghiệm TF phù hợp .

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

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

Kiểm thử máy chủ JAR

Kiểm thử máy chủ lưu trữ 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 mã mức độ phù hợp của dự án Java. Các chương trình kiểm thử như vậy có thể được định cấu hình để chạy trên một bài kiểm thử lưu trữ bằng trình chạy HostTest.

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

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

Cấu hình kiểm thử chạy chương trình kiểm thử 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ừ phi quy trình kiểm thử của bạn cần được thiết lập hoặc dọn dẹp đặc biệt, hãy dựa vào quy trình tạo cấu hình thử nghiệm tự động để tạo thử nghiệm TradeFed phù hợp .

Để biết thêm thông tin chi tiết về cách viết chương trình kiểm thử máy chủ JAR, hãy tham khảo Trang Kiểm thử máy chủ JAR (Java).

Kiểm thử máy chủ Java tách biệt

Bạn có thể chạy chương trình kiểm thử Java không thiết bị trong một môi trường tách biệt với chi phí hiệu suất thấp. Tuy nhiên, có một số yếu tố quan trọng bạn cần cân nhắc trước khi chọn sử dụng môi trường.

  • Đây là trình chạy mặc định được dùng cho các chương trình kiểm thử đơn vị Robolectric và JUnit
  • Tradefeed chỉ hỗ trợ thử nghiệm JUnit trong môi trường tách biệt.
  • Chỉ hỗ trợ các phần phụ thuộc được liên kết tĩnh. Chưa khai báo phần phụ thuộc với 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à lọ thử nghiệm của bạn trên classpath.
  • Có một số mức hao tổn cố định cho mỗi lần chạy kiểm thử được thực thi bằng trình chạy này.

Cấu hình thử nghiệm trao đổi mẫu (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 Soong mẫu để tự động tạo

Thay vì tạo cấu hình kiểm thử 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 như ví dụ bên dưới.

java_test_host {
    name: "HelloWorldHostTest",

    test_options: {
        unit_test: true,
    },

    test_suites: ["general-tests"],

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

    static_libs: [
        "junit",
    ],
}

Kiểm thử Robolectric

Các chương trình kiểm thử Robolectric sử dụng cùng một trình chạy như các kiểm thử máy chủ tách biệt, với một vài đặc biệt .

  • Tuỳ chọn robolectric-resources bật một vài tuỳ chọn dòng lệnh dành riêng cho Robolectric được truyền vào quy trình phụ cũng như thêm bản dựng cây của android-all vào đường dẫn lớp quy trình phụ. Mặc dù hai phương pháp còn lại là các phương pháp hay nhất, nhưng đây là phương án bắt buộc đối với chạy chương trình kiểm thử Robolectric với bất kỳ thành công nào.
  • Tuỳ chọn java-folder cho phép thay đổi môi trường thời gian chạy Java mà quy trình phụ sử dụng. Đâ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 lưu trữ.
  • Tuỳ chọn exclude-paths cho phép trình chạy quy trình phụ tránh tải các mô-đun cụ thể điều này rất hữu ích khi tệp 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 tiêu chí loại trừ phổ biến, để tránh gửi ra SecurityException ngoại lệ.

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 Soong mẫu để tự động tạo Robolectric

Thay vì tạo cấu hình kiểm thử 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 một 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 thử Python

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

Cấu hình thử nghiệm mẫu trên 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 bài kiểm thử phía máy chủ đối với một bản dựng nhất định, hãy đặt giá trị cài đặt mô-đun kiểm tra `test_suites` thành `general-tests`:

test_suites: ["general-tests"],

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