27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Test çalıştırıcısının yapısı
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Test çalıştırıcı, çağrı akışı yürütme birimidir. Testler burada çalıştırılır.
Arayüzler
Test çalıştırıcıları, IRemoteTest arayüzü aracılığıyla tanımlanır. Bu arayüz, testler çalıştırıldığında çağrılacak basit bir run
yöntemi uygulamanızı sağlar.
Bu sayede test çalıştırmanın en basit tanımı gerçekleşir. Ancak pratikte test yazarlarının testlerini doğru şekilde yazmak için daha fazla bilgiye (genellikle derleme ve cihaz bilgileri) ihtiyacı vardır. İşte bu noktada aşağıdaki arayüzler devreye girer.
Temel
Bu iki arayüz, çoğu testin temel ihtiyaçlarını temsil ettiği için günümüzde en yaygın olarak kullanılan arayüzlerdir.
- IBuildReceiver, testin derleme sağlayıcısı adımında oluşturulan
IBuildInfo
nesnesini almasına olanak tanır. Bu nesne, test kurulumuyla ilgili tüm bilgileri ve yapıları içerir.
- IDeviceTest, TF'nin test edilen cihazı temsil eden
ITestDevice
nesnesini almasına olanak tanır ve bu nesneyle etkileşim kurmak için bir API sağlar.
Gelişmiş
Test donanımı ile test çalıştırıcı arasında daha karmaşık etkileşimlere olanak tanıyan ek arayüzler vardır:
- ITestFilterReceiver: Testin yalnızca belirli testleri çalıştırmak için bir dizi filtre almasına olanak tanır. Bu, testlerin bir alt kümesini çalıştırırken kullanışlıdır.
- ITestCollector, test çalıştırıcısının testleri gerçekten yürütmek yerine yalnızca kuru çalıştırmasına olanak tanır. Bu, tüm test durumlarının listesini toplamada faydalıdır.
Mevcut test çalıştırıcıları
Bazıları önemli test türleri için olmak üzere çeşitli test çalıştırıcıları mevcuttur:
Yukarıdakilerin yanı sıra çok sayıda özel test çalıştırıcı vardır. Bunlar, önyükleme testi gibi bazı işlevsel testler için özel amaçlara hizmet eder.
Yeni bir test çalıştırıcı yazma
Yeni bir test çalıştırıcı yazmayla ilgili daha fazla bilgiyi test yazma bölümünde bulabilirsiniz.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 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)."]]