ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
โครงสร้างของโปรแกรมรันทดสอบ
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
โปรแกรมทดสอบเป็นหน่วยการดําเนินการของขั้นตอนการเรียกใช้ นี่เป็นส่วนที่เรียกใช้การทดสอบจริง
อินเทอร์เฟซ
โปรแกรมรันทดสอบจะกำหนดผ่านอินเทอร์เฟซ IRemoteTest ซึ่งมีเมธอด run
ง่ายๆ ที่จะเรียกใช้เมื่อต้องเรียกใช้การทดสอบ
วิธีนี้ช่วยให้การเรียกใช้การทดสอบเกิดขึ้นได้โดยใช้คําจํากัดความที่ง่ายที่สุด แต่ในทางปฏิบัติ นักเขียนทดสอบจะต้องใช้ข้อมูลเพิ่มเติมในการเขียนการทดสอบอย่างถูกต้อง ซึ่งโดยทั่วไปคือข้อมูลบิลด์และอุปกรณ์ อินเทอร์เฟซต่อไปนี้จึงมีประโยชน์
พื้นฐาน
อินเทอร์เฟซ 2 แบบนี้เป็นอินเทอร์เฟซที่ใช้กันอย่างแพร่หลายมากที่สุดในปัจจุบัน เนื่องจากเป็นอินเทอร์เฟซที่ตอบสนองความต้องการพื้นฐานของการทดสอบส่วนใหญ่
- IBuildReceiver
ช่วยให้การทดสอบได้รับออบเจ็กต์
IBuildInfo
ที่สร้างขึ้นในระยะ build
provider
ซึ่งมีข้อมูลและอาร์ติแฟกต์ทั้งหมดที่เกี่ยวข้องกับการตั้งค่าการทดสอบ
- IDeviceTest ช่วยให้คุณรับออบเจ็กต์
ITestDevice
ที่แสดงถึงอุปกรณ์ภายใต้การทดสอบได้ และยังมี API สำหรับการโต้ตอบกับอุปกรณ์
ขั้นสูง
อินเทอร์เฟซเพิ่มเติมที่ช่วยให้การทำงานร่วมกันระหว่างชุดทดสอบและโปรแกรมรันทดสอบมีความซับซ้อนมากขึ้นมีดังนี้
- ITestFilterReceiver ซึ่งช่วยให้การทดสอบได้รับชุดตัวกรองสําหรับการเรียกใช้การทดสอบบางอย่างเท่านั้น ซึ่งจะมีประโยชน์ในการเรียกใช้ชุดทดสอบย่อย
- ITestCollector ซึ่งช่วยให้โปรแกรมรันทดสอบทำการทดสอบเสมือนจริงแทนที่จะทำการทดสอบจริง ซึ่งจะมีประโยชน์ในการรวบรวมรายการชุดทดสอบทั้งหมด
ผู้เรียกใช้การทดสอบที่มีอยู่
เครื่องมือทดสอบมีหลากหลายประเภทอยู่แล้ว โดยบางประเภทมีไว้สําหรับการทดสอบหลักๆ ดังนี้
นอกเหนือจากเครื่องมือรันทดสอบที่กำหนดเองข้างต้นแล้ว ยังมีเครื่องมือรันทดสอบที่กำหนดเองจำนวนมากที่ทำงานเพื่อวัตถุประสงค์เฉพาะสำหรับการทดสอบฟังก์ชันการทำงานบางอย่าง เช่น การทดสอบการบูต
เขียนโปรแกรมรันทดสอบใหม่
ดูคําแนะนําเพิ่มเติมเกี่ยวกับการเขียนโปรแกรมรันเนอร์การทดสอบใหม่ได้ในส่วนการเขียนการทดสอบ
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Structure of a test runner\n\nThe test runner is the execution unit of the invocation flow. This is where\ntests actually run.\n\nInterfaces\n----------\n\nTest runners are defined via the [IRemoteTest\ninterface](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/invocation_interfaces/com/android/tradefed/testtype/IRemoteTest.java),\nwhich provides a simple `run` method to implement that will be called when the\ntests is to run.\n\nThis allows the simplest definition of a test run to occur. But in practice,\ntest writers will need more information to properly write their tests, typically\nbuild and device information. This is where the following interfaces come handy.\n\n### Basic\n\nThese two interfaces are the most widely used today, as they represent the basic\nneeds of most tests.\n\n- [IBuildReceiver](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/IBuildReceiver.java) allows the test to get the `IBuildInfo` object created at the [build\n provider](/docs/core/tests/tradefed/architecture/build-provider) step containing all the information and artifacts related to the test setup.\n- [IDeviceTest](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/IDeviceTest.java) allows TF to receive the `ITestDevice` object that represents the device under test and provides an API to interact with it.\n\n### Advanced\n\nThere are additional interfaces that allow more complex interaction between the\ntest harness and the test runner:\n\n- [ITestFilterReceiver](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/ITestFilterReceiver.java), which allows the test to receive a set of filters for running certain tests only. This is useful in running a subset of the tests.\n- [ITestCollector](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/ITestCollector.java), which allows a test runner to only dry-run the tests instead of actually executing them. This is useful in collecting the list of all test cases.\n\nExisting test runners\n---------------------\n\nA variety of test runners already exists, some for major test types:\n\n- [AndroidJUnitTest / InstrumentationTest](/reference/tradefed/com/android/tradefed/testtype/AndroidJUnitTest) (associated with AJUR on the device side)\n- [GTest](/reference/tradefed/com/android/tradefed/testtype/GTest) (device and host side) with [googletest library](https://github.com/google/googletest)\n- [Host-driven\n tests](/reference/tradefed/com/android/tradefed/testtype/HostTest) (Java tests that execute on the host and call the device from there)\n- [Pure Java unit\n tests](/reference/tradefed/com/android/tradefed/testtype/HostTest) (our runner does both)\n- [Python tests](/reference/tradefed/com/android/tradefed/testtype/python/PythonBinaryHostTest)\n- [Google Benchmark\n tests](/reference/tradefed/com/android/tradefed/testtype/GoogleBenchmarkTest) with [benchmark library](https://github.com/google/benchmark)\n\nA large number of custom test runners exist besides the above; they serve\nspecialized purposes for some functional testing, for example Boot Test.\n\nWrite a new test runner\n-----------------------\n\nMore guidance of writing a new test runner is available in the [writing tests\nsection](/docs/core/tests/tradefed/testing/through-tf/new-test-runner)."]]