Jeśli korzystasz z usług dostawcy treści do przechowywania i pobierania danych lub udostępnić dane innym aplikacjom, musisz przetestować dostawcę, aby upewnić się, że nie zachowuje się w nieoczekiwany sposób. W tej lekcji dowiesz się, jak testować publiczne reklamy dostawców treści, a także tych dostawców, których dane pozostają prywatne. dzięki własnej aplikacji.
Tworzenie testów integracji dla dostawców treści
Dostawcy treści umożliwiają dostęp do rzeczywistych danych użytkowników, warto więc dbać o to, należy przetestować dostawcę treści w osobnym środowisku testowym. Ten pozwala uruchamiać działania tylko w odniesieniu do zależności danych ustawionych bezpośrednio dla danego przypadku testowego. Oznacza to również, że Twoje testy nie modyfikują rzeczywistych danych użytkowników. Dla: nie należy pisać testu, który nie powiódł się ze względu na pozostawienie danych w porównaniu z poprzednim testem. Analogicznie test nie powinien dodawać ani usuwać rzeczywiste dane kontaktowe dostawcy.
Aby przetestować dostawcę treści osobno, użyj narzędzia ProviderTestCase2
zajęcia. Ta klasa pozwala używać przykładowych klas obiektów na Androidzie, takich jak
IsolatedContext
i MockContentResolver
, aby uzyskać dostęp do plików i
do informacji z bazy danych, nie zmieniając
rzeczywistych danych użytkownika.
Test integracji powinien być zapisany jako klasa testowa JUnit 4. Aby dowiedzieć się więcej, o tworzeniu klas testowych JUnit 4 i używaniu asercji JUnit 4 znajdziesz w artykule o tworzeniu Zajęcia Test jednostek lokalnych.
Aby utworzyć test integracji dla dostawcy treści, musisz wykonać te czynności: kroki:
- Utwórz klasę testową jako podklasę klasy
ProviderTestCase2
. - Określ klasę
AndroidJUnitRunner
udostępnianą przez AndroidX Test jako domyślnego biegacza testowego. - Ustaw obiekt
Context
z klasyApplicationProvider
. Zobacz poniżej.
Kotlin
@Throws(Exception::class) override fun setUp() { super.setUp() context = ApplicationProvider.getApplicationContext<Context>() }
Java
@Override protected void setUp() throws Exception { super.setUp(); setContext(ApplicationProvider.getApplicationContext()); }
Jak działa ProviderTestCase2
Testujesz dostawcę z podklasą ProviderTestCase2
. Ta klasa bazowa
rozszerza AndroidTestCase
, udostępnia więc platformę testowania JUnit jako
oraz specyficzne dla Androida metody testowania uprawnień aplikacji. Najbardziej
ważną cechą tej klasy jest jej inicjalizacja, która tworzy
izolowane środowisko testowe.
Inicjalizacja
Inicjowanie jest wykonywane w konstruktorze funkcji ProviderTestCase2
,
które podklasy wywołują własne konstruktory. ProviderTestCase2
konstruktor tworzy obiekt IsolatedContext
, który umożliwia użycie pliku
na bazie danych, ale pomija inne interakcje z systemem Android.
Operacje na plikach i bazach danych odbywają się w katalogu, który jest
lokalne dla urządzenia lub emulatora i ma specjalny prefiks.
Konstruktor tworzy następnie obiekt MockContentResolver
, który będzie używany jako resolver
na potrzeby testu.
Na koniec konstruktor tworzy instancję testowanego dostawcy. To jest
Zwykły obiekt ContentProvider
, ale pobiera całe jego środowisko
informacji podawanych przez: IsolatedContext
, więc można z niej korzystać tylko w
w odizolowanym środowisku testowym. Wszystkie testy w klasie przypadku testowego zostały uruchomione
z tym wyizolowanym obiektem.
Testy integracji dla dostawców treści przeprowadzasz w taki sam sposób, jak w przypadku testów instrumentalnych testów jednostkowych.
Co testować
Oto kilka konkretnych wskazówek dotyczących testowania dostawców treści.
- Testowanie za pomocą metod resolvera: nawet jeśli możesz utworzyć instancję dostawcy.
obiekt
w
ProviderTestCase2
, zawsze testuj z obiektem resolvera, używając funkcji odpowiedni identyfikator URI. W ten sposób testujesz dostawcę przez wykonując tę samą interakcję, której używa zwykła aplikacja. - Testowanie usługodawcy publicznego w formie umowy: jeśli chcesz, aby usługodawca był
publiczne i dostępne dla innych aplikacji, warto je przetestować jako umowę.
Oto kilka przykładów:
- Testowanie za pomocą stałych wartości, które dostawca publicznie udostępnia. Na przykład zobacz, dla stałych, które odwołują się do nazw kolumn w jednej z tabel danych dostawcy. Powinny to być zawsze stałe zdefiniowane publicznie przez dostawcę.
- Przetestuj wszystkie identyfikatory URI oferowane przez dostawcę. Twój usługodawca może zaoferować kilka Identyfikatory URI, z których każdy odnosi się do innego aspektu danych.
- Przetestuj nieprawidłowe identyfikatory URI. Twoje testy jednostkowe powinny celowo wywoływać dostawcę przez:
nieprawidłowy identyfikator URI i poszukaj błędów. Dobrym przykładem dostawcy jest przesłanie
IllegalArgumentException
w przypadku nieprawidłowych identyfikatorów URI.
- Testowanie standardowych interakcji z usługodawcami: większość dostawców oferuje 6 dostępów.
metody:
query()
,insert()
,delete()
,update()
,getType()
ionCreate()
. Twoje testy powinny potwierdzić, że wszystkie te metody działają. - Testowanie logiki biznesowej: jeśli dostawca treści stosuje logikę biznesową, Ty należy go przetestować. Logika biznesowa obejmuje obsługę nieprawidłowych wartości, obliczeń arytmetycznych, eliminacji lub łączenia duplikatów.