Uruchamiający test to jednostka wykonania przepływu wywołania. To właśnie tam są wykonywane testy.
Interfejsy
Testy są definiowane za pomocą interfejsu IRemoteTest, który udostępnia prostą metodę run
do wdrożenia, która jest wywoływana podczas przeprowadzania testów.
Umożliwia to najprostszą definicję uruchomienia testowego. W praktyce jednak osoby zapisujące testy będą potrzebować więcej informacji, aby prawidłowo pisać testy – zwykle są to np. informacje o kompilacji i urządzeniach. Tutaj z pomocą przydają się poniższe interfejsy.
Podstawowe
Te 2 interfejsy są obecnie najczęściej używane, ponieważ spełniają podstawowe potrzeby większości testów.
- IBuildReceiver umożliwia testowi pobranie obiektu
IBuildInfo
utworzonego w kroku dostawcy kompilacji ze wszystkimi informacjami i artefaktami związanymi 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 uruchamianie testów tylko próbnemu przeprowadzaniu testów zamiast ich faktycznego wykonywania. Przydaje się to podczas tworzenia listy wszystkich przypadków testowych.
Istniejące narzędzia do testowania
Istnieje już wiele różnych uruchomień testów, w tym niektóre dla głównych typów testów:
- AndroidJUnitTest / InstrumentationTest (powiązane z AJUR po stronie urządzenia)
- GTest (po stronie urządzenia i hosta) z biblioteką googletest
- testy sterowane przez hosta (testy w Javie, które są wykonywane na hoście i tam wywołują urządzenie);
- Testy jednostek w czystej Javie (nasz Runner wykonuje oba rodzaje testów).
- testy Pythona,
- testy Google Benchmark z biblioteką 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.
Pisanie nowego test runnera
Więcej wskazówek dotyczących tworzenia nowego narzędzia do testowania znajdziesz w sekcji poświęconej tworzeniu testów.