Tài liệu này mô tả cách trực tiếp chạy kiểm thử qua dòng lệnh. Tài liệu này giả định rằng bạn đã nắm được cách tạo một ứng dụng Android và viết bài kiểm thử cho ứng dụng. Để biết thêm thông tin về cách xây dựng bài kiểm thử cho ứng dụng, hãy xem phần Kiểm thử ứng dụng trên Android.
Khi bạn xây dựng ứng dụng bằng hệ thống bản dựng Gradle, trình bổ trợ Android cho Gradle sẽ cho phép bạn chạy kiểm thử trong dự án Gradle bằng dòng lệnh. Để kiểm soát chi tiết hơn, bạn có thể chọn chạy kiểm thử thông qua lệnh shell Cầu gỡ lỗi Android (adb). Điều này có thể hữu ích khi chạy kiểm thử trong môi trường tích hợp liên tục.
Để tìm hiểu cách chạy kiểm thử đo lường tự động qua dòng lệnh bằng các thiết bị ảo mà Gradle quản lý cho bạn, hãy xem phần Điều chỉnh tỷ lệ kiểm thử bằng Thiết bị do Gradle quản lý.
Chạy kiểm thử bằng Gradle
Trình bổ trợ Android cho Gradle cho phép bạn chạy kiểm thử trong dự án Gradle bằng cách sử dụng dòng lệnh.
Bảng dưới đây tóm tắt cách chạy kiểm thử trong Gradle:
Loại kiểm thử đơn vị | Lệnh để chạy | Vị trí của kết quả kiểm thử |
---|---|---|
Kiểm thử đơn vị cục bộ |
Chạy tác vụ test :
|
Tệp kết quả kiểm thử HTML: thư mục path_to_your_project/module_name/build/reports/tests/ .
Tệp kết quả kiểm thử XML: |
Kiểm thử đơn vị đo lường |
Chạy tác vụ connectedAndroidTest :
|
Tệp kết quả kiểm thử HTML: thư mục path_to_your_project/module_name/build/reports/androidTests/connected/ .
Tệp kết quả kiểm thử XML: |
Gradle hỗ trợ viết tắt tên nhiệm vụ.
Ví dụ: bạn có thể bắt đầu nhiệm vụ connectedAndroidTest
bằng cách nhập lệnh sau:
./gradlew cAT
Bạn cũng có thể chạy các nhiệm vụ check
và connectedCheck
trên Gradle. Các nhiệm vụ này lần lượt chạy kiểm thử cục bộ hoặc kiểm thử đo lường, nhưng ngoài ra còn có các bài kiểm thử khác do các trình bổ trợ Gradle khác thêm vào.
Chạy kiểm thử trên một mô-đun
Nhiệm vụ test
và connectedAndroidTest
chạy kiểm thử trên từng mô-đun trong dự án của bạn. Bạn có thể chạy kiểm thử trên một mô-đun cụ thể bằng cách đặt tên và dấu hai chấm (:) vào trước nhiệm vụ test
hoặc connectedAndroidTest
. Ví dụ: sau đây là lệnh chạy kiểm thử đo lường chỉ cho mô-đun mylibrary
:
./gradlew mylibrary:connectedAndroidTest
Chạy kiểm thử trên biến thể bản dựng
Nhiệm vụ test
và connectedAndroidTest
chạy kiểm thử trên từng biến thể bản dựng trong dự án của bạn. Bạn có thể nhắm đến một biến thể bản dựng cụ thể bằng cú pháp sau:
- Đối với kiểm thử đơn vị cục bộ:
./gradlew testVariantNameUnitTest
- Đối với kiểm thử đo lường:
./gradlew connectedVariantNameAndroidTest
Chạy phương pháp hoặc lớp kiểm thử cụ thể
Khi chạy kiểm thử đơn vị cục bộ, Gradle cho phép bạn tập trung vào các lượt kiểm thử cụ thể bằng cờ --tests
. Ví dụ: lệnh sau đây chỉ chạy các lượt kiểm thử sampleTestMethod
cho biến thể bản dựng đã chỉ định. Để tìm hiểu thêm về cách sử dụng cờ --tests
, hãy đọc tài liệu của Gradle về tính năng lọc kiểm thử.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
Chạy kiểm thử bằng adb
Khi chạy kiểm thử từ dòng lệnh bằng Cầu gỡ lỗi Android (adb), bạn sẽ có nhiều lựa chọn kiểm thử hơn để chạy so với mọi phương thức khác. Bạn có thể chọn các phương thức kiểm thử riêng lẻ, lọc lượt kiểm thử theo chú thích tuỳ chỉnh hoặc chỉ định tuỳ chọn kiểm thử. Vì lượt kiểm thử mà bạn chạy được kiểm soát hoàn toàn qua dòng lệnh, nên bạn có thể tuỳ chỉnh lượt kiểm thử bằng tập lệnh shell theo nhiều cách.
Để chạy kiểm thử qua dòng lệnh, hãy chạy adb shell
để bắt đầu một shell dòng lệnh trên thiết bị hoặc trình mô phỏng. Bên trong shell đó, bạn có thể tương tác với trình quản lý hoạt động bằng lệnh am
và sử dụng lệnh con instrument
tương ứng để chạy kiểm thử.
Bạn có thể sử dụng am instrument
(như một phím tắt) để khởi động một shell adb và chỉ định tất cả cờ hiệu dòng lệnh trên một dòng nhập. Shell này mở ra trên thiết bị hoặc trình mô phỏng, chạy kiểm thử, tạo kết quả rồi sau đó trở về dòng lệnh trên máy tính.
Cách chạy kiểm thử bằng am instrument
:
- Xây dựng hoặc xây dựng lại ứng dụng chính và gói kiểm thử.
- Cài đặt các tệp gói kiểm thử và gói ứng dụng chính cho Android (tệp APK) vào trình mô phỏng hoặc thiết bị Android hiện tại của bạn.
Tại dòng lệnh, hãy nhập:
adb shell am instrument -w <test_package_name>/<runner_class>
Trong đó
<test_package_name>
là tên gói Android của ứng dụng kiểm thử và<runner_class>
là tên của lớp chạy kiểm thử Android mà bạn đang sử dụng. Tên gói Android là giá trị thuộc tính gói của phần tử tệp kê khai trong tệp kê khai của gói kiểm thử (AndroidManifest.xml
).Lớp chạy kiểm thử Android thường là
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
Kết quả kiểm thử của bạn sẽ xuất hiện trên STDOUT
.
Cờ am instrument
Để tìm danh sách tất cả cờ để sử dụng cùng lệnh am instrument
, hãy chạy adb shell am help
. Bảng sau đây mô tả một số cờ quan trọng:
Gắn cờ | Giá trị | Mô tả |
---|---|---|
-w
|
(không có) |
Buộc am instrument phải đợi cho đến khi kiểm thử đo lường chấm dứt rồi mới tự chấm dứt. Thao tác này sẽ giữ cho shell bật cho đến khi kiểm thử kết thúc. Bạn cần có cờ này để xem được kết quả kiểm thử.
|
-r
|
(không có) |
Kết quả xuất ra ở định dạng thô. Dùng cờ này khi bạn muốn thu thập kết quả đo lường hiệu suất để những kết quả đó không được định dạng thành kết quả kiểm thử. Cờ này được thiết kế để sử dụng với cờ -e perf true (ghi lại trong phần các tuỳ chọn am instrument).
|
-e
|
<test_options>
|
Cung cấp các tuỳ chọn kiểm thử dưới dạng các cặp khoá-giá trị. Công cụ am instrument sẽ truyền các cặp giá trị này đến lớp (class) đo lường đã chỉ định bằng phương thức onCreate() . Bạn có thể chỉ định nhiều lần chạy -e <test_options> . Các khoá và giá trị được mô tả trong phần các tuỳ chọn am instrument. Bạn chỉ có thể sử dụng các cặp khoá-giá trị này cùng AndroidJUnitRunner hoặc InstrumentationTestRunner và các lớp con tương ứng. Việc sử dụng cùng các lớp khác không có tác dụng.
|
--no-hidden-api-checks
|
(không có) | Tắt các hạn chế về việc sử dụng API ẩn. Để biết thêm thông tin về định nghĩa API ẩn cũng như tác động của API ẩn đối với ứng dụng của bạn, hãy đọc phần Các hạn chế đối với giao diện không phải SDK. |
Các tuỳ chọn am instrument
Công cụ am instrument
truyền các tuỳ chọn kiểm thử đến AndroidJUnitRunner
hoặc InstrumentationTestRunner
ở dạng cặp khoá-giá trị (bằng cờ -e
) với cú pháp sau:
-e <key> <value>
Một số khoá chấp nhận nhiều giá trị. Bạn chỉ định nhiều giá trị trong một danh sách được phân tách bằng dấu phẩy. Ví dụ, lệnh gọi này của AndroidJUnitRunner
cung cấp nhiều giá trị cho khoá package
:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
Bảng sau đây liệt kê các cặp khoá-giá trị mà bạn có thể sử dụng với trình chạy kiểm thử:
Khoá | Giá trị | Mô tả |
---|---|---|
package
|
<Java_package_name>
|
Tên gói Java đủ điều kiện của một trong các gói trong ứng dụng kiểm thử. Mọi lớp kiểm thử sử dụng tên gói này sẽ đều được thực thi. Xin lưu ý rằng đây không phải là tên gói Android; mỗi gói kiểm thử có một tên gói Android duy nhất nhưng có thể có nhiều gói Java trong đó. |
class |
<class_name> |
Tên loại Java đủ điều kiện cho một trong các lớp trường hợp kiểm thử. Chỉ có lớp trường hợp kiểm thử này được thực thi. |
<class_name>#method name |
Một tên lớp trường hợp kiểm thử đủ điều kiện và một trong các phương pháp tương ứng. Chỉ có phương thức này được thực thi. Hãy lưu ý ký hiệu băm (#) giữa tên lớp và tên phương thức. | |
func |
true |
Chạy mọi bài kiểm thử mở rộng InstrumentationTestCase .
|
unit |
true |
Chạy mọi bài kiểm thử không mở rộng InstrumentationTestCase hoặc PerformanceTestCase .
|
size |
[small | medium | large ]
|
Chạy phương thức kiểm thử có chú thích theo kích thước. Có các mã chú thích @SmallTest , @MediumTest và @LargeTest .
|
perf |
true |
Chạy mọi lớp kiểm thử triển khai PerformanceTestCase .
Khi bạn sử dụng tuỳ chọn này, hãy chỉ định cờ -r cho am instrument để kết quả được lưu giữ ở định dạng thô và không được định dạng lại dưới dạng kết quả kiểm thử.
|
debug |
true |
Chạy kiểm thử ở chế độ gỡ lỗi. |
log |
true |
Tải và ghi nhật ký mọi bài kiểm thử đã chỉ định nhưng không chạy các bài kiểm thử đó. Thông tin kiểm thử sẽ xuất hiện trong STDOUT . Hãy dùng thông tin này để xác minh các kiểu kết hợp các bộ lọc khác cũng như thông số của bài kiểm thử.
|
emma |
true |
Chạy bản phân tích mức độ sử dụng mã EMMA và ghi đầu ra vào /data/<app_package>/coverage.ec trên thiết bị. Để ghi đè vị trí tệp, hãy sử dụng khoá coverageFile theo mô tả trong mục sau.
Lưu ý: Tuỳ chọn này đòi hỏi một bản dựng ứng dụng kiểm thử do EMMA đo lường mà bạn có thể tạo bằng mục tiêu |
coverageFile |
<filename> |
Ghi đè lên vị trí mặc định của tệp mức độ phù hợp EMMA trên thiết bị. Hãy chỉ định giá trị này làm một đường dẫn và tên tệp ở định dạng UNIX.
Tên tệp mặc định được mô tả trong mục nhập cho khoá emma .
|
Khi sử dụng cờ -e
, hãy lưu ý những điều sau:
am instrument
gọionCreate(Bundle)
vớiBundle
chứa các cặp khoá-giá trị.- Khoá
package
được ưu tiên hơn khoáclass
. Nếu bạn chỉ định một gói rồi sau đó chỉ định riêng một lớp bên trong gói đó, Android sẽ chạy mọi bài kiểm thử trong gói và bỏ qua khoá của lớp đó. - Khoá
func
và khoáunit
loại trừ lẫn nhau.
Ví dụ về cách dùng
Các phần sau đây đưa ra ví dụ về việc dùng am instrument
để chạy kiểm thử.
Các khoá này dựa trên cấu trúc như sau:
- Gói kiểm thử có tên gói Android là
com.android.demo.app.tests
- Hai lớp kiểm thử đo lường:
TestClass1
chứa phương thức kiểm thửtestMethod1
.TestClass2
chứa phương thức kiểm thửtestMethod2
vàtestMethod3
.
- Trình chạy kiểm thử là
AndroidJUnitRunner
.
Chạy toàn bộ gói kiểm thử
Để chạy mọi bài kiểm thử trong gói kiểm thử, hãy nhập:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Chạy mọi bài kiểm thử trong lớp trường hợp kiểm thử
Để chạy mọi bài kiểm thử trong lớp TestClass1
, hãy nhập:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Chọn một tập hợp con kiểm thử
Để chạy mọi bài kiểm thử trong lớp TestClass1
và phương thức testMethod3
trong TestClass2
, hãy nhập:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Bạn có thể xem các trường hợp sử dụng khác trong tài liệu tham khảo về API AndroidJUnitRunner
.