Dostawcy treści testowych

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:

  1. Utwórz klasę testową jako podklasę klasy ProviderTestCase2.
  2. Określ klasę AndroidJUnitRunner udostępnianą przez AndroidX Test jako domyślnego biegacza testowego.
  3. Ustaw obiekt Context z klasy ApplicationProvider. 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() i onCreate(). 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.