Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Struktura narzędzia do testowania
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Uruchamiający test to jednostka wykonawcza przepływu wywołania. To właśnie tam są wykonywane testy.
Interfejsy
Uruchamiacze testów są definiowane za pomocą interfejsu IRemoteTest, który udostępnia prostą metodę run
do implementacji, która zostanie wywołana podczas uruchamiania testów.
Umożliwia to najprostszą definicję przeprowadzenia testu. W praktyce jednak do prawidłowego napisania testów programiści będą potrzebować więcej informacji, zazwyczaj informacji o kompilacji i urządzeniu. W tym przypadku przydatne mogą być te interfejsy.
Podstawowe
Te 2 interfejsy są obecnie najczęściej używane, ponieważ odpowiadają podstawowym potrzebom większości testów.
- IBuildReceiver
pozwala testowi uzyskać obiekt
IBuildInfo
utworzony na etapie build
provider, zawierający wszystkie informacje i elementy związane z konfiguracją testu.
- IDeviceTest umożliwia TF otrzymanie obiektu
ITestDevice
, który reprezentuje testowane urządzenie, oraz udostępnia interfejs API do interakcji z tym urządzeniem.
Zaawansowane
Istnieją dodatkowe interfejsy, które umożliwiają bardziej złożoną interakcję między narzędziem testowym a programem do uruchamiania testów:
- ITestFilterReceiver,
który umożliwia testowi otrzymywanie zestawu filtrów tylko do uruchamiania określonych testów. Jest to przydatne podczas uruchamiania podzbioru testów.
- ITestCollector,
który umożliwia narzędziu do testowania tylko symulowanie testów zamiast ich rzeczywistego wykonywania. Jest to przydatne przy zbieraniu listy wszystkich przypadków testowych.
Istniejące narzędzia do testowania
Istnieje już wiele narzędzi do testowania, niektóre z nich obsługują główne typy testów:
Oprócz wymienionych wyżej istnieje wiele niestandardowych narzędzi do testowania. Służą one do specjalistycznych celów, np. do testowania funkcjonalności.
Tworzenie nowego test runnera
Więcej wskazówek dotyczących tworzenia nowego narzędzia do testowania znajdziesz w sekcji poświęconej tworzeniu testów.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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)."]]