Lần đầu tiên đọc Kiểm tra ứng dụng của bạn trên developer.android.com. Hãy lưu ý rằng có một số khác biệt trong cách sử dụng thử nghiệm thiết bị trong thử nghiệm nền tảng.
Tóm lại, thử nghiệm thiết bị cung cấp một môi trường thực thi thử nghiệm đặc biệt như được khởi chạy thông qua lệnh am instrument
, trong đó quy trình ứng dụng đích được khởi động lại và khởi tạo với ngữ cảnh ứng dụng cơ bản, đồng thời một luồng thiết bị được bắt đầu bên trong VM quy trình ứng dụng. Mã thử nghiệm của bạn bắt đầu thực thi trên luồng thiết bị này và được cung cấp một phiên bản Instrumentation
cung cấp quyền truy cập vào ngữ cảnh ứng dụng và API để thao tác quy trình ứng dụng đang được thử nghiệm.
Ý chính
- một thiết bị đo đạc phải được khai báo trong gói ứng dụng, với thẻ
<instrumentation>
được lồng bên dưới thẻ<manifest>
của tệp kê khai gói ứng dụng. - một tệp kê khai gói ứng dụng về mặt kỹ thuật có thể chứa nhiều thẻ
<instrumentation>
, mặc dù nó không được sử dụng phổ biến theo kiểu này. - mỗi
<instrumentation>
phải chứa:- thuộc tính
android:name
: nó phải là tên của một lớp con củaInstrumentation
được bao gồm trong ứng dụng thử nghiệm, thường là trình chạy thử nghiệm đang được sử dụng, ví dụ:android.support.test.runner.AndroidJUnitRunner
- một thuộc tính
android:targetPackage
phải được xác định. Giá trị của nó phải được đặt thành gói ứng dụng đang được thử nghiệm.
- thuộc tính
Tóm tắt các bước
Dưới đây là các điểm đến phổ biến cho các thử nghiệm kín đối với các dịch vụ khung:
frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests
Nếu bạn đang thêm một mô-đun thiết bị hoàn toàn mới cho thành phần của mình, hãy xem
Theo quy ước hiện có nếu bạn đang thêm các bài kiểm tra vào một trong các vị trí trên. Nếu bạn đang thiết lập một mô-đun thử nghiệm mới, vui lòng làm theo hướng dẫn thiết lập
AndroidManifest.xml
vàAndroid.mk
ở một trong các vị trí trênXem frameworks/base/core/tests/coretests/ để biết ví dụ. Lưu ý những dòng này cài đặt thêm ứng dụng:
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
Đừng quên đánh dấu bài kiểm tra của bạn là
@SmallTest
,@MediumTest
hoặc@LargeTest
Xây dựng mô-đun thử nghiệm với m, ví dụ:
m FrameworksCoreTests
Chạy thử nghiệm:
Giải pháp đơn giản nhất là sử dụng Atest như sau:
atest FrameworksCoreTests
Hoặc đối với các bài kiểm tra phức tạp hơn, hãy sử dụng Khai thác kiểm tra Liên đoàn thương mại :
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
Nếu không sử dụng Tradefed, hãy cài đặt thủ công và chạy thử nghiệm:
- Cài đặt apk đã tạo:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
Chạy thử nghiệm với các tùy chọn khác nhau:
tất cả các bài kiểm tra trong apk
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
tất cả các thử nghiệm trong một gói Java cụ thể
adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
tất cả các bài kiểm tra dưới một lớp cụ thể
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
một phương pháp kiểm tra cụ thể
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
Bài kiểm tra của bạn có thể đưa ra xác nhận rõ ràng về việc vượt qua hoặc thất bại bằng cách sử dụng API JUnit
; Ngoài ra, bất kỳ ngoại lệ nào chưa được phát hiện cũng sẽ gây ra lỗi chức năng.
Để đưa ra chỉ số hiệu suất, mã thử nghiệm của bạn có thể gọi Instrumentation#sendStatus
để gửi danh sách các cặp khóa-giá trị. Điều quan trọng cần lưu ý là:
- số liệu có thể là số nguyên hoặc dấu phẩy động
- mọi giá trị không phải là số sẽ bị loại bỏ
- apk thử nghiệm của bạn có thể là kiểm tra chức năng hoặc kiểm tra số liệu, tuy nhiên việc kết hợp cả hai hiện không được hỗ trợ