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ủaandroid-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 raSecurityException
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
.