از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
ساختار یک دونده آزمایشی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اجرای آزمایشی واحد اجرای جریان فراخوانی است. این جایی است که آزمایش ها در واقع اجرا می شوند.
رابط ها
اجراکنندههای آزمایشی از طریق رابط IRemoteTest تعریف میشوند، که یک روش run
ساده را برای پیادهسازی ارائه میدهد که هنگام اجرای آزمایشها فراخوانی میشود.
این اجازه می دهد تا ساده ترین تعریف یک اجرای آزمایشی رخ دهد. اما در عمل، نویسندگان آزمون به اطلاعات بیشتری برای نوشتن درست تست های خود، معمولاً اطلاعات ساخت و ساز، نیاز دارند. اینجاست که رابط های زیر به کار می آیند.
اساسی
این دو رابط امروزه بیشترین استفاده را دارند، زیرا نشان دهنده نیازهای اساسی اکثر تست ها هستند.
- IBuildReceiver به تست اجازه می دهد تا شی
IBuildInfo
را در مرحله ارائه دهنده ساخت ایجاد کند که حاوی تمام اطلاعات و مصنوعات مربوط به تنظیم تست است. - IDeviceTest به TF اجازه می دهد تا شی
ITestDevice
را دریافت کند که نشان دهنده دستگاه تحت آزمایش است و یک API برای تعامل با آن فراهم می کند.
پیشرفته
اینترفیس های اضافی وجود دارد که امکان تعامل پیچیده تری را بین مهار تست و دونده آزمایشی فراهم می کند:
- ITestFilterReceiver ، که به آزمون اجازه می دهد مجموعه ای از فیلترها را فقط برای اجرای آزمایش های خاص دریافت کند. این در اجرای زیر مجموعه ای از تست ها مفید است.
- ITestCollector ، که به یک دونده آزمایشی اجازه میدهد تا آزمایشها را بهجای اجرای واقعی، فقط به صورت خشک اجرا کند. این در جمع آوری لیست تمام موارد آزمایش مفید است.
دوندگان آزمون موجود
انواع آزمون دونده در حال حاضر وجود دارد، برخی برای انواع اصلی آزمون:
علاوه بر موارد فوق، تعداد زیادی تست سفارشی وجود دارد. آنها اهداف تخصصی را برای برخی از تست های عملکردی، به عنوان مثال تست بوت، انجام می دهند.
یک تست جدید بنویسید
راهنمایی بیشتر برای نوشتن یک تست جدید در بخش تست های رایتینگ موجود است.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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)."]]