Na tej stronie dowiesz się, jak napisać nowy przebieg testowy w ramach Tradefed.
Tło
Jeśli ciekawi Cię miejsce testów w architekturze Tradefed, zobacz Struktura biegacza do testów.
Nie jest to wymogiem wstępnym napisaniem nowego testu. mogą być zapisane osobno.
Wymagane minimum: wdrożenie interfejsu
Aby zostać uczestnikiem testów Tradefed, należy wdrożyć
Interfejs IRemoteTest
a dokładniej metodę run(TestInformation testInfo, ITestInvocationListener listener)
.
Jest to metoda wywoływana przez wiązkę podczas korzystania z mechanizmu uruchamiania testów, podobny do środowiska wykonawczego Java.
Każda część tej metody jest uważana za część uruchomienia uruchamiania testów.
Raportuj wyniki z testera
Metoda run
w interfejsie podstawowym daje dostęp do obiektu odbiornika
wpisz ITestInvocationListener
. Ten obiekt jest kluczem do uporządkowanych raportów
z testera do kablem.
Raportując uporządkowane wyniki, osoba wykonująca test ma te właściwości:
- Sporządź listę wszystkich przeprowadzonych testów, czasu ich trwania oraz ewentualnych zaliczone pojedynczo, nie powiodło się lub miały inne stany.
- Uwzględniaj w raportach dane związane z testami (w odpowiednich przypadkach), np. wskaźników związanych z instalacją.
- Dopasowanie do większości narzędzi infrastruktury, np. wyświetlania wyników dane itd.
- Zwykle łatwiej jest debugować, ponieważ dostępny jest bardziej szczegółowy ślad
Pamiętaj, że raportowanie uporządkowanych wyników jest opcjonalne. biegacz, chce tylko ocenić stan całego przebiegu jako ZAKOŃCZONO lub NIE ZAKOŃCZONO bez żadnych szczegółów dotyczących faktycznego wykonania.
Poniższe zdarzenia mogą być wywoływane dla detektora, aby powiadamiać o użyciu bieżący postęp wykonań:
- testRunStarted: powiadamia o początkach grupy przypadków testowych, które są
powiązane ze sobą.
- testStarted: powiadamia o rozpoczęciu przypadku testowego.
- testFailed/testignored: powiadamiaj o zmianie stanu przypadku testowego w toku. Uwzględniany jest przypadek testowy bez żadnej zmiany stanu zaliczono.
- testEnded: powiadamia o końcu przypadku testowego.
- testRunFailed: powiadom, że ogólny stan grupy przypadków testowych kończy się niepowodzeniem. Test może być zaliczony lub niezaliczony. niezależnie od wyników przypadków testowych, w zależności od tego, oczekiwanego wykonania. na przykład plik binarny uruchamiający kilka przypadków testowych, może zgłaszać wszystkie przypadki testowe, które zakończyły się powodzeniem, ale z kodem wyjścia błędu (dla każdego z powodów: wyciek plików itp.).
- testRunEnded: powiadamiaj koniec grupy przypadków testowych.
Utrzymanie i zapewnienie odpowiedniej kolejności wywołań zwrotnych to
odpowiedzialnością uruchamiającą proces testowania, na przykład za zapewnienie,
Funkcja testRunEnded
jest wywoływana w przypadku wyjątku za pomocą klauzuli finally
.
Wywołania zwrotne przypadków testowych (testStarted
, testEnded
itp.) są opcjonalne. Test
może odbyć się bez żadnych przypadków testowych.
Być może z pewnością zauważysz, że inspiracją do tej struktury wydarzeń typową strukturę JUnit. Dzięki temu deweloperzy mają do dyspozycji podstawowe informacje, mają zazwyczaj wiedzę na ten temat.
Raportuj logi z testera
Jeśli tworzysz własne zajęcia testowe lub biegacza Tradefed, wdrożysz
Test pilotażowy IRemoteTest
i uzyskaj ITestInvocationListener
za pomocą metody run()
. Ten detektor
umożliwia rejestrowanie plików w następujący sposób:
listener.testLog(String dataName, LogDataType type_of_data, InputStreamSource data);
Testowanie na urządzeniu
Minimalny interfejs powyżej pozwala na przeprowadzanie bardzo prostych testów, które są wydzielone i nie wymagają żadnych konkretnych zasobów, np. testów jednostkowych w języku Java.
Autorzy tekstów, którzy chcą przejść do kolejnego etapu testowania urządzeń, muszą mieć tych interfejsów:
- IDeviceTest
umożliwia odbieranie obiektu
ITestDevice
, który reprezentuje urządzenie testu i udostępnia interfejs API do interakcji z nim. - IBuildReceiver
umożliwia testowi pobranie obiektu
IBuildInfo
utworzonego w krok dostawcy kompilacji który zawiera wszystkie informacje i artefakty związane z konfiguracją testu.
Uczestnicy testu są zwykle zainteresowani tymi interfejsami, aby uzyskać artefaktów związanych z wykonaniem, na przykład dodatkowych plików, oraz testowane urządzenie, które będzie celem działania w trakcie wykonywania.
Testowanie na wielu urządzeniach
Tradefed umożliwia jednoczesne przeprowadzanie testów na wielu urządzeniach. To jest przydatne przy testowaniu komponentów, które wymagają interakcji zewnętrznej, np. parowanie telefonu i zegarka.
Aby napisać aplikację biegową do obsługi wielu urządzeń,
aby wdrożyć
IMultiDeviceTest
co pozwoli otrzymać mapę z ITestDevice
do IBuildInfo
, która zawiera
pełną listę reprezentacji urządzeń i powiązanych z nimi informacji o kompilacji.
Metoda ustawiająca z interfejsu będzie zawsze wywoływana przed metodą run
, więc
można bezpiecznie przyjąć, że struktura będzie dostępna po wywołaniu funkcji run
.
Testy znające swoją konfigurację
Niektóre implementacje uruchamiania testów mogą potrzebować informacji o ogólnej konfiguracji
do prawidłowego działania, np. metadanych wywołania,
co było wcześniej uruchamiane przez target_preparer
itd.
Aby to osiągnąć, uruchamiający testy może uzyskać dostęp do obiektu IConfiguration
którego częścią i w którym jest wykonywany. Zobacz
obiekt konfiguracji
aby dowiedzieć się więcej.
W przypadku implementacji mechanizmu uruchamiania testów musisz zastosować
IConfigurationReceiver
aby otrzymać obiekt IConfiguration
.
Elastyczny biegacz testowy
Mogą to zrobić w elastyczny sposób, jeśli mają szczegółową kontrolę nad nimi, np. osoba przeprowadzająca testy JUnit może pojedynczo i wykonuj każdy test jednostkowy.
Dzięki temu szersze pasy i infrastruktura mogą wykorzystać tę dokładną kontrolę. i uruchamiać częściowe uruchamianie testu przy użyciu filtrowania.
Obsługa filtrowania jest opisana w
Interfejs ITestFilterReceiver,
który umożliwia otrzymywanie zestawów filtrów include
i exclude
do testów
które powinny lub nie powinny działać.
Zgodnie z naszą konwencją przeprowadzany jest test, który pasuje do co najmniej jednego uwzględniaj filtry ORAZ nie pasuje do żadnego z filtrów wykluczania. Jeśli nie, uwzględniaj określone filtry, należy uruchamiać wszystkie testy, o ile nie pasują do żadnego filtry wykluczania.