Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Struktur runner pengujian
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Runner pengujian adalah unit eksekusi alur pemanggilan. Di sinilah
pengujian benar-benar dijalankan.
Antarmuka
Runner pengujian ditentukan melalui antarmuka IRemoteTest,
yang menyediakan metode run
sederhana untuk diterapkan yang akan dipanggil saat
pengujian akan dijalankan.
Hal ini memungkinkan definisi pengujian yang paling sederhana untuk dijalankan. Namun, dalam praktiknya,
penulis pengujian akan memerlukan lebih banyak informasi untuk menulis pengujian dengan benar, biasanya
informasi build dan perangkat. Di sinilah antarmuka berikut berguna.
Dasar
Kedua antarmuka ini adalah yang paling banyak digunakan saat ini, karena mewakili kebutuhan dasar
sebagian besar pengujian.
- IBuildReceiver
memungkinkan pengujian mendapatkan objek
IBuildInfo
yang dibuat pada langkah penyedia
build
yang berisi semua informasi dan artefak yang terkait dengan penyiapan pengujian.
- IDeviceTest
memungkinkan TF menerima objek
ITestDevice
yang mewakili perangkat
yang sedang diuji dan menyediakan API untuk berinteraksi dengannya.
Lanjutan
Ada antarmuka tambahan yang memungkinkan interaksi yang lebih kompleks antara
harness pengujian dan runner pengujian:
- ITestFilterReceiver,
yang memungkinkan pengujian menerima serangkaian filter untuk menjalankan pengujian
tertentu saja. Hal ini berguna dalam menjalankan sebagian pengujian.
- ITestCollector,
yang memungkinkan runner pengujian hanya menjalankan pengujian secara dry run, bukan benar-benar
menjalankannya. Hal ini berguna dalam mengumpulkan daftar semua kasus pengujian.
Runner pengujian yang ada
Berbagai runner pengujian sudah ada, beberapa untuk jenis pengujian utama:
Selain yang disebutkan di atas, ada banyak runner pengujian kustom; runner ini melayani
tujuan khusus untuk beberapa pengujian fungsional, misalnya Pengujian Booting.
Menulis runner pengujian baru
Panduan selengkapnya tentang cara menulis runner pengujian baru tersedia di bagian menulis
pengujian.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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)."]]