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 này được khởi chạy thông qua lệnh am instrument
, trong đó đoạn mã được nhắm mục tiêu
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. Thông tin
mã kiểm thử bắt đầu thực thi trên luồng đo lường này và được cung cấp kèm theo
một thực thể Instrumentation
cung cấp quyền truy cập vào ngữ cảnh của ứng dụng
và API để thao túng 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 lớp con củaInstrumentation
có trong ứng dụng kiểm thử, thường là kiểm thử trình chạy đ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 kết quả 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 thử nghiệm phức tạp hơn, hãy sử dụng Khai thác kiểm tra của Liên kết 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 lượt 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ử thuộc 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 khẳng định rõ ràng về việc đạt hoặc không đạt bằng cách sử dụng các API JUnit
; inch
ngoài ra, mọi trường hợp ngoại lệ chưa được nắm bắt 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