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