2010-01-12 15 views
21

Android oferuje różnorodne pakiety dla testów jakKorzystanie Android Framework testu

AndroidTestCase ApplicationTestCase InstrumentationTestCase ActivityInstrumentationTestCase2 ActivityTestCase

Muszę wiedzieć, jak zdecydować, który pakiet jest najlepiej nadaje się do testowania mojej aplikacji. Niektóre informacje są zawarte w tym linku

http: //developer.android.com/reference/android/test/package-summary.html

Ale muszę większą jasność w tej sprawie ...

Odpowiedz

46

TestCase - Plain Old sprawdzian JUnit. Można go rozszerzyć, aby przetestować klasy narzędziowe, które nie są powiązane ze strukturą systemu Android.

AndroidTestCase - Rozciąga się na JUnit TestCase. Jest to lżejsza klasa testowa w porównaniu z ActivityTestCase. Nie trzeba wykonywać uruchamiania działania, aby go uruchomić. Metoda getContext() pozwala uzyskać wstrzyknięty kontekst, jeśli jest potrzebny. Ponieważ można uzyskać kontekst z tej klasy , można nadmuchać obiekty interfejsu użytkownika , aby przetestować ich zachowania.

ActivityInstrumentationTestCase2 - Jest to nowsza wersja ActivityInstrumentationTestCase. ActivityInstrumentationTestCase jest przestarzałe w systemie Android SDK 1.5. To cięższa klasa testowa w porównaniu z AndroidTestCase. Zapewnia interfejs użytkownika i testy funkcjonalne dla pojedynczego działania. Możesz wykonać wstrzyknięte działanie, które testujesz, wywołując metodę getActivity(). Testowana aktywność jest uruchamiana przed każdym testem i po nim.

ActivityUnitTestCase - Daje badanego Aktywność wyizolowaną środowiska. Podczas używania go do testowania aktywności , działanie nie jest dołączone do systemu . To daje większą kontrolę nad jakim środowisku który chcesz swoją działalność do testowane

ApplicationTestCase. - Zapewnia testów dla klas aplikacji. Może być używany do testowania cyklu życia aplikacji.

InstrumentationTestRunner - Biegacz, który działa to badanie z systemem Android przypadki.

Po prostu znalazłem to .. Nadzieję, że to pomaga innym ... Jeśli chcesz więcej szczegółów, takich jak kiedy i jak używać, zobacz aplikację testową APIDemos w katalogu próbek w Android SDK.

+4

co o InstrumentationTestCase? – Zorb

+0

ActivityUnitTestCase nie może pomóc więcej dla API24 – sunnyleevip

1

Znalazłem this tutorial z droidcon 09, aby był naprawdę pouczający. W komplecie z przykładami kodu źródłowego do pobrania.

Edytuj: Link wydaje się być martwy, jak wskazano w komentarzach.

Przechodzi proces tworzenia testu konwertera temperatury Cahuego na Fahrenheita - najpierw za pomocą ActivityInstrumentationTestCase2, TestCase i AndroidTestCase.

+0

Link do samouczka jest już nieaktualny. – powder366

8

Proszę zobaczyć wykres hierarchii klas sporządzony przeze mnie przy użyciu programu PowerPoint.

Przyjęta odpowiedź daje wystarczającą ilość informacji w słowach. Po prostu, aby wyjaśnić za pomocą wykresu :)

Dla InstrumentationTestCase @Zorb zapytał, to jest klasa nadrzędna dla ActivityTestCase między innymi. Pozwala na wywołanie metody getInstrumentation w celu uzyskania instancji oprzyrządowania, aby można było obsługiwać aplikację, aktywność i tym podobne.

Class hierarchy graph drawn by myself

2

INTRO

Aby wyjaśnić swoje pytanie i układać klas prosicie, istotne jest, aby dzielić PRZED testy w dwóch kategoriach. testy JUnit (w teorii zwykły Java) i Instrumentation testuje (które są również częścią pakietu testu JUnit, ale pozwoli Ci przetestować więcej SDK Androida powiązanych funkcji).

Tradycyjne testy JUnit izolują fragment kodu i przeprowadzają test. Oprzyrządowanie testuje dostęp bardziej włącznie do komponentów Androida. ALE TEŻ TESTY AKUMULATORÓW PORZĄDKUJĄ Z PAKIETU JUNITOWEGO, mimo że są tworzone w systemie nawet przed uruchomieniem kodu aplikacji, co wyjaśnia, dlaczego są wolniejsze, a ponadto potrzebują emulatora lub telefonu uruchamiającego testowaną aplikację do wykonania.

(Wykonaj pogrubioną czcionkę we wszystkich klasach, o których wspominasz, ale są jeszcze inne, których użyję bez napisu pogrubionego).

**** PIERWSZE CZĘŚĆ ** (testy jUnit) **

A) testy jUnit które rozciągają TextCase (zazwyczaj szybciej niż oprzyrządowanie, łączenie dobrze Mock framweworks)

AndroidTestCase: Umożliwia dostęp do kontekstu testowanej aktywności i jej zasobów, jest klasą bazową, która rozszerza bardziej wyspecjalizowane podklasy, jest idealny do uzyskiwania dostępu do baz danych, danych systemu plików. Możesz łatwo wywołać metodę getContext() i uzyskać dostęp do zasobów bez nawiązania bezpośredniego kontaktu z działaniami, tak jak w przypadku testów oprzyrządowania.

ApplicationTestCase, który kontroluje środowisko, w którym tekst aplikacji, głównie kontekst i cykl życia. Inne naprawdę użyteczne rozszerzenia AndroidTestCase umożliwiają sterowanie ładowarkami, usługami i dostawcami treści, ale z jakiegoś powodu wciąż nie ma żadnego odbiornika Broadcast, który można nazwać [pośrednio] [1] metodą MethodationRegistry.getTargetContext(), a następnie tworzenie BroadCastReceiver . Również jest to bardzo powszechne użycie innego ramy Mock z JUnit, który jest zwykle szybciej niż InstrumentationTests

-.-.-.-.-.-.-.-.--

**** druga część ** (testy pomiarowe) **

B)testy pomiarowe, które rozciągają TestCase są uważane testy funkcjonalne, przyjąć, aby zapewnić, że działają dobrze z boku użytkownika, widok część MVC Są zwykle wolniejsze niż inne wymienione kategorie

InstrumentationTestCase to klasa bazowa przydatna wysłać kluczowych zdarzeń UI symulowanie klawiszy klawiatury QWERTY lub przyciski DPad, również uruchamia działania, które muszą być testowane, a nawet Intents

ActivityTestCase zwykle nie używane samodzielnie, ma po prostu wspólny kod dla podklas, ale w przypadku gdy nie są spełnione przez 3 klasy, które dziedziczą z tego (patrz poniżej), jak nowy składnik przyszłości można go używać do czasu nie istnieje Klasa TestCase dedykowana.

ActivityInstrumentationTestCase2 to najczęściej używana klasa Instrumentation do pisania testów funkcjonalnych, od konstruktora wywoływana jest instancja działania do przetestowania. Zasadniczo wywołujesz aktywność za pomocą funkcji getActivity() i możesz pratycznie uruchomić dowolną metodę tego działania.

ActivityInstrumentationTestCase, jest przestarzała i ActivityUnitTestCase że chociaż jest pod Instrumentation jest bardziej podobna do badanej jednostki

+1

Znalazłem przydatną odpowiedź. Szkoda, że ​​ci, którzy są "spóźnieni na imprezę", rzadko biorą uptoed! –

+0

dziękuję za uznanie dla Roberta, nieważne, że społeczność, która chce wiedzieć więcej przewijać może skorzystać. Reputacja jest względna, a pisanie uporządkowanych postów pomaga autorowi w nauce – trocchietto

Powiązane problemy