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ố điểm khác biệt về 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 môi trường thực thi kiểm thử đặc biệt được khởi chạy thông qua lệnh am instrument
, trong đó quy trình ứng dụng mục tiêu được khởi động lại và khởi tạo bằng ngữ cảnh ứng dụng cơ bản, đồng thời một luồng đo lường được khởi động trong VM 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
cho phép 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 kiểm thử.
Khái niệm chính
- một công cụ đo lường phải được khai báo trong một gói ứng dụng, với thẻ
<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ù 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
: đâ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 dùng, ví dụ:android.support.test.runner.AndroidJUnitRunner
- bạn phải xác định một thuộc tính
android:targetPackage
. Giá trị của tham số 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 các 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
Tuân theo quy ước hiện có nếu bạn đang thêm các bài kiểm thử vào một trong những 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 quy trình thiết lập
AndroidManifest.xml
vàAndroid.mk
ở một trong các vị trí nêu trênHãy xem frameworks/base/core/tests/coretests/ để biết ví dụ. Xin lưu ý rằng các dòng này 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 bài kiểm tra 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 Atest như sau:
atest FrameworksCoreTests
Hoặc đối với các kiểm thử phức tạp hơn, hãy dùng Trade Federation test Harness:
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 và chạy các kiểm thử theo cách thủ công:
- Cài đặt tệp apk đã tạo:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
Chạy kiểm thử bằng nhiều lựa chọn:
tất cả các kiểm thử trong apk
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
tất cả các 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 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
Bài kiểm thử của bạn có thể đưa ra một khẳng định rõ ràng về việc vượt qua hoặc không vượt qua bằng cách sử dụng JUnit
API; ngoài ra, mọi trường hợp ngoại lệ chưa được phát hiện cũng sẽ gây ra lỗi chức năng.
Để phát ra các 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 số thực
- mọi giá trị không phải là số sẽ bị loại bỏ
- APK kiểm thử của bạn có thể là kiểm thử chức năng hoặc kiểm thử chỉ số, tuy nhiên, hiện tại chúng tôi không hỗ trợ việc kết hợp cả hai