เอกสารนี้จะอธิบายวิธีเรียกใช้การทดสอบจากบรรทัดคำสั่งโดยตรง ช่วงเวลานี้ เอกสารจะถือว่าคุณทราบวิธีสร้างแอป Android อยู่แล้วและ เขียนการทดสอบสำหรับแอปของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างการทดสอบสำหรับ โปรดดูทดสอบแอปใน Android
เมื่อคุณสร้างแอปโดยใช้ระบบบิลด์ Gradle ระบบ Android Gradle ปลั๊กอิน ให้คุณเรียกใช้การทดสอบจาก Gradle โดยใช้บรรทัดคำสั่ง หากต้องการการควบคุมที่ละเอียดขึ้น คุณสามารถ เลือกทำการทดสอบผ่าน Android Debug Bridge (adb) เชลล์ ซึ่งจะเป็นประโยชน์เมื่อทำการทดสอบใน การผสานรวมอย่างต่อเนื่อง
หากต้องการดูวิธีเรียกใช้การทดสอบแบบมีเครื่องมืออัตโนมัติจากบรรทัดคำสั่งโดยใช้ อุปกรณ์เสมือนที่ Gradle จัดการให้คุณ โปรดดูปรับขนาดการทดสอบด้วย Gradle อุปกรณ์ที่มีการจัดการ
ทำการทดสอบด้วย Gradle
ปลั๊กอิน Android Gradle ให้คุณเรียกใช้การทดสอบจากโปรเจ็กต์ Gradle โดยใช้ บรรทัดคำสั่ง
ตารางด้านล่างจะสรุปวิธีทำการทดสอบด้วย Gradle
ตาราง 1 วิธีต่างๆ ในการทำการทดสอบ เกรเดิล
ประเภทการทดสอบ 1 หน่วย | คำสั่งที่จะเรียกใช้ | ตำแหน่งผลการทดสอบ |
---|---|---|
การทดสอบหน่วยในเครื่อง |
เรียกใช้งาน test ด้วยคำสั่งต่อไปนี้
|
ไฟล์ผลการทดสอบ HTML: วันที่ path_to_your_project/module_name/build/reports/tests/
ไดเรกทอรี
ไฟล์ผลการทดสอบ XML: |
การทดสอบ 1 หน่วยแบบมีเครื่องวัด |
เรียกใช้งาน connectedAndroidTest ด้วยคำสั่งต่อไปนี้
|
ไฟล์ผลการทดสอบ HTML: วันที่ path_to_your_project/module_name/build/reports/androidTests/connected/
ไดเรกทอรี
ไฟล์ผลการทดสอบ XML: |
รองรับ Gradle
ตัวย่อชื่องาน
ตัวอย่างเช่น คุณสามารถเริ่มงาน connectedAndroidTest
ได้โดย
ป้อนคำสั่งต่อไปนี้
./gradlew cAT
นอกจากนี้ คุณยังเลือกเรียกใช้งาน Gradle แบบ check
และ connectedCheck
ได้ด้วย เหล่านี้
จะทำการทดสอบในเครื่องหรือแบบมีเครื่องวัดตามลำดับ
มีการตรวจสอบอื่นๆ ที่เพิ่มโดยปลั๊กอิน Gradle อื่นๆ
เรียกใช้การทดสอบในโมดูล
งาน test
และ connectedAndroidTest
เรียกใช้การทดสอบในแต่ละโมดูลใน
คุณสามารถทำการทดสอบในโมดูลที่ต้องการได้โดย
นำหน้างาน test
หรือ connectedAndroidTest
ด้วยชื่อโมดูลและ
เครื่องหมายโคลอน (:) ตัวอย่างเช่น คำสั่งต่อไปนี้จะเรียกใช้การทดสอบแบบมีเครื่องควบคุมสำหรับ
โมดูล mylibrary
:
./gradlew mylibrary:connectedAndroidTest
ทำการทดสอบในตัวแปรของบิลด์
งาน test
และ connectedAndroidTest
เรียกใช้การทดสอบในแต่ละงาน
สร้างตัวแปรในโปรเจ็กต์ คุณสามารถกำหนดเป้าหมาย
ตัวแปรบิลด์ที่เฉพาะเจาะจงโดยใช้ไวยากรณ์ต่อไปนี้
- สำหรับการทดสอบ 1 หน่วยในเครื่อง
./gradlew testVariantNameUnitTest
- สำหรับการทดสอบแบบมีเครื่องวัด ให้ทำดังนี้
./gradlew connectedVariantNameAndroidTest
เรียกใช้วิธีหรือคลาสการทดสอบที่เฉพาะเจาะจง
เมื่อเรียกใช้การทดสอบหน่วยท้องถิ่น Gradle ช่วยให้คุณสามารถกำหนดเป้าหมายการทดสอบที่เฉพาะเจาะจงโดยใช้
ธง--tests
ตัวอย่างเช่น คำสั่งต่อไปนี้จะเรียกใช้เฉพาะ
sampleTestMethod
การทดสอบสำหรับตัวแปรบิลด์ที่ระบุ หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ
โดยใช้แฟล็ก --tests
โปรดอ่านเอกสารประกอบของ Gradle
การกรองทดสอบ
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
ทำการทดสอบด้วย adb
เมื่อคุณเรียกใช้การทดสอบจากบรรทัดคำสั่งด้วย Android Debug Bridge (adb) มีตัวเลือกเพิ่มเติมสำหรับ การเลือกการทดสอบที่จะเรียกใช้มากกว่าวิธีอื่นๆ คุณสามารถเลือก วิธีการทดสอบ กรองการทดสอบตามคำอธิบายประกอบที่กำหนดเอง หรือระบุการทดสอบ ตัวเลือก เนื่องจากการดำเนินการทดสอบควบคุมจากบรรทัดคำสั่งทั้งหมด สามารถปรับแต่งการทดสอบด้วยสคริปต์ Shell ได้หลายวิธี
หากต้องการเรียกใช้การทดสอบจากบรรทัดคำสั่ง ให้เรียกใช้ adb shell
เพื่อเริ่มต้นบรรทัดคำสั่ง
Shell บนอุปกรณ์หรือโปรแกรมจำลองของคุณ ภายในเชลล์ดังกล่าวคุณสามารถโต้ตอบกับ
เครื่องมือจัดการกิจกรรม
โดยใช้คำสั่ง am
และใช้คำสั่งย่อย instrument
เพื่อทำการทดสอบ
คุณสามารถเริ่มต้น Shell adb, เรียกใช้ am instrument
และระบุเป็นทางลัดได้
ติดธงบรรทัดคำสั่งทั้งหมดในบรรทัดอินพุตเดียว เปลือกจะเปิดขึ้นในอุปกรณ์หรือ
โปรแกรมจำลอง เรียกใช้การทดสอบ สร้างเอาต์พุต แล้วกลับไปยังบรรทัดคำสั่ง
บนคอมพิวเตอร์
วิธีทำการทดสอบกับ am instrument
- สร้างหรือสร้างแอปพลิเคชันหลักอีกครั้ง และ แพ็กเกจทดสอบ
- ติดตั้งแพ็กเกจทดสอบและแพ็กเกจหลัก ไฟล์แพ็กเกจ Android (ไฟล์ APK) ของแอปพลิเคชันไปยังอุปกรณ์ Android ปัจจุบันของคุณ หรือ โปรแกรมจำลอง
ในบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้
adb shell am instrument -w <test_package_name>/<runner_class>
โดยที่
<test_package_name>
คือชื่อแพ็กเกจ Android ของการทดสอบ และ<runner_class>
คือชื่อคลาสตัวดำเนินการทดสอบ Android ที่คุณใช้อยู่ ชื่อแพ็กเกจ Android คือค่าขององค์ประกอบในไฟล์ Manifest แอตทริบิวต์แพ็กเกจในไฟล์ Manifest ของแพ็กเกจทดสอบ (AndroidManifest.xml
)คลาสตัวดำเนินการทดสอบ Android มักจะ
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
ผลการทดสอบจะปรากฏในภาษาSTDOUT
ธงเครื่องดนตรี AM
หากต้องการดูรายการแฟล็กทั้งหมดที่จะใช้กับคำสั่ง am instrument
เรียกใช้ adb shell am help
การแจ้งว่าไม่เหมาะสมที่สำคัญได้อธิบายไว้ใน
ตารางต่อไปนี้
ตาราง 2 am instrument
ที่สำคัญ
Flag
ตั้งค่าสถานะ | ค่า | คำอธิบาย |
---|---|---|
-w
|
(ไม่มี) |
บังคับให้ am instrument รอจนกว่าจะมีการใช้เครื่องมือ
สิ้นสุดก่อนที่จะสิ้นสุดการใช้งานเอง ซึ่งทำให้
เปิดเชลล์ไว้จนกว่าการทดสอบจะเสร็จสิ้น แฟล็กนี้จำเป็นสำหรับ
ดูผลการทดสอบของคุณ
|
-r
|
(ไม่มี) |
เอาต์พุตที่ได้จะอยู่ในรูปแบบไฟล์ข้อมูล RAW ใช้แฟล็กนี้เมื่อคุณต้องการ
รวบรวมการวัดประสิทธิภาพเพื่อไม่ให้มีการจัดรูปแบบเป็น
ผลการทดสอบ ธงนี้ได้รับการออกแบบมาเพื่อใช้กับ Flag ดังกล่าว
-e perf true (บันทึกไว้ใน
am instrument options)
|
-e
|
<test_options>
|
ให้ตัวเลือกการทดสอบเป็นคู่คีย์-ค่า
เครื่องมือ am instrument ส่งรายการเหล่านี้ไปยัง
คลาสการใช้เครื่องมือ
onCreate()
คุณสามารถระบุหลายรายการของ
-e <test_options> คีย์และค่ามีดังนี้
ตามที่อธิบายไว้ใน
ตัวเลือกเครื่องดนตรี Am คุณสามารถ
ให้ใช้คู่คีย์-ค่าเหล่านี้เฉพาะกับ
AndroidJUnitRunner
หรือด้วย InstrumentationTestRunner
และคลาสย่อยด้วย การใช้ส่วนขยายดังกล่าวกับชั้นเรียนอื่นจะไม่ส่งผลใดๆ
|
--no-hidden-api-checks
|
(ไม่มี) | ปิดใช้ข้อจำกัดในการใช้ API ที่ซ่อนอยู่ สำหรับข้อมูลเพิ่มเติม ข้อมูลว่า API ที่ซ่อนอยู่คืออะไร และสิ่งนี้จะส่งผลกระทบต่อ แอป, อ่าน ข้อจำกัดเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK |
ตัวเลือกเครื่องมือ AM
เครื่องมือ am instrument
จะส่งตัวเลือกการทดสอบไปยัง
AndroidJUnitRunner
หรือInstrumentationTestRunner
ในรูปแบบคู่คีย์-ค่า โดยใช้แฟล็ก -e
พร้อมไวยากรณ์ต่อไปนี้
-e <key> <value>
บางคีย์ยอมรับหลายค่า คุณระบุค่าหลายค่าใน
รายการที่คั่นด้วยคอมมา ตัวอย่างเช่น การเรียกใช้นี้
AndroidJUnitRunner
ระบุหลายค่าสำหรับคีย์ package
ดังนี้
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
ตารางต่อไปนี้แสดงคู่คีย์-ค่าที่คุณใช้กับตัวดำเนินการทดสอบได้
ตารางที่ 3 คู่คีย์-ค่า -e Flag ที่จะใช้กับ ตัวดำเนินการทดสอบของคุณ
คีย์ | ค่า | คำอธิบาย |
---|---|---|
package
|
<Java_package_name>
|
ชื่อแพ็กเกจ Java แบบเต็มสำหรับหนึ่งใน ในแอปพลิเคชันทดสอบ คลาสของกรอบการทดสอบที่ใช้ค่านี้ ชื่อแพ็กเกจถูกดำเนินการ โปรดสังเกตว่านี่ไม่ใช่ ชื่อแพ็กเกจ Android แพ็กเกจทดสอบมีคอมโพเนนต์ ชื่อแพ็กเกจ Android แต่อาจมีแพ็กเกจ Java หลายแพ็กเกจ |
class |
<class_name> |
ชื่อคลาส Java ที่มีคุณสมบัติครบถ้วนสำหรับหนึ่งในกรอบการทดสอบ ใหม่ ระบบจะดำเนินการเฉพาะคลาสของกรอบการทดสอบนี้เท่านั้น |
<class_name>#method name |
ชื่อคลาสของกรอบการทดสอบที่สมบูรณ์ในตัวเองและหนึ่งในเมธอดของประเภทนั้น เฉพาะ เมธอดนี้ จดเครื่องหมายแฮช (#) ระหว่างคลาส และชื่อเมธอด | |
func |
true |
เรียกใช้คลาสทดสอบทั้งหมดที่ขยาย
InstrumentationTestCase
|
unit |
true |
เรียกใช้คลาสทดสอบทั้งหมดที่ไม่ได้ขยาย
InstrumentationTestCase หรือ
PerformanceTestCase
|
size |
[small | medium | large ]
|
เรียกใช้วิธีทดสอบที่มีคำอธิบายประกอบตามขนาด คำอธิบายประกอบ
@SmallTest , @MediumTest และ
@LargeTest
|
perf |
true |
เรียกใช้คลาสทดสอบทั้งหมดที่ใช้
PerformanceTestCase
เมื่อคุณใช้ตัวเลือกนี้ ให้ระบุแฟล็ก -r สำหรับ
am instrument เพื่อให้เอาต์พุตอยู่ในรูปแบบไฟล์ข้อมูล RAW
และไม่มีการจัดรูปแบบใหม่เป็นผลการทดสอบ
|
debug |
true |
ทำการทดสอบในโหมดแก้ไขข้อบกพร่อง |
log |
true |
โหลดและบันทึกการทดสอบที่ระบุทั้งหมด แต่ไม่ได้เรียกใช้การทดสอบ การทดสอบ
ข้อมูลจะปรากฏใน STDOUT ใช้ข้อความนี้เพื่อยืนยัน
การใช้ตัวกรองและข้อมูลจำเพาะในการทดสอบร่วมกัน
|
emma |
true |
เรียกใช้การวิเคราะห์การครอบคลุมของรหัส EMMA และเขียนเอาต์พุตไปยัง
/data/<app_package>/coverage.ec ในอุปกรณ์ ถึง
ลบล้างตำแหน่งที่ตั้งไฟล์ โดยใช้คีย์ coverageFile
ซึ่งอธิบายไว้ในรายการต่อไปนี้
หมายเหตุ: ตัวเลือกนี้ต้องใช้ EMMA ที่ใช้อุปกรณ์
ใหม่ของแอปพลิเคชันทดสอบ ซึ่งคุณสามารถสร้างด้วย
เป้าหมาย |
coverageFile |
<filename> |
ลบล้างตำแหน่งเริ่มต้นของไฟล์การครอบคลุมของ EMMA ใน
อุปกรณ์ ระบุค่านี้เป็นเส้นทางและชื่อไฟล์ในรูปแบบ UNIX
ชื่อไฟล์เริ่มต้นมีอธิบายไว้ในรายการสำหรับ
emma
|
เมื่อใช้แฟล็ก -e
โปรดระมัดระวังสิ่งต่อไปนี้
- เรียกใช้
am instrument
รายการonCreate(Bundle)
โดยมีBundle
ที่มีคีย์-ค่า คู่ - คีย์
package
จะมีความสำคัญเหนือคีย์class
หากคุณระบุ แล้วระบุคลาสภายในแพ็กเกจนั้นแยกกัน เรียกใช้การทดสอบทั้งหมดในแพ็กเกจและละเว้นคีย์คลาส - คีย์
func
และคีย์unit
ไม่เกี่ยวข้องกัน
ตัวอย่างการใช้
ส่วนต่อไปนี้แสดงตัวอย่างการใช้ am instrument
เพื่อทำการทดสอบ
โดยอิงตามโครงสร้างต่อไปนี้
- แพ็กเกจทดสอบมีชื่อแพ็กเกจ Android
com.android.demo.app.tests
- ชั้นเรียนการสอบเครื่องดนตรี 2 ระดับ ได้แก่
TestClass1
ซึ่งมีเมธอดทดสอบtestMethod1
TestClass2
ซึ่งมีเมธอดทดสอบtestMethod2
และtestMethod3
- ตัวดำเนินการทดสอบคือ
AndroidJUnitRunner
เรียกใช้แพ็กเกจการทดสอบทั้งหมด
หากต้องการเรียกใช้คลาสการทดสอบทั้งหมดในแพ็กเกจการทดสอบ ให้ป้อน:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
ทำการทดสอบทั้งหมดในชั้นเรียนกรอบการทดสอบ
หากต้องการทำการทดสอบทั้งหมดในชั้นเรียน TestClass1
ให้ป้อน
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
เลือกชุดย่อยของการทดสอบ
หากต้องการทำการทดสอบทั้งหมดในชั้นเรียน TestClass1
และวิธี testMethod3
ใน TestClass2
ให้ป้อน
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
ดู Use Case เพิ่มเติมได้ใน
AndroidJUnitRunner
การอ้างอิง API