Testowanie układu tworzenia wiadomości

Testuj interfejs aplikacji, aby sprawdzić, czy kod Compose działa prawidłowo. Pozwala to wcześnie wykrywać błędy i poprawiać jakość aplikacji.

Compose udostępnia zestaw interfejsów API do testowania, które umożliwiają znajdowanie elementów, weryfikowanie ich atrybutów i wykonywanie działań użytkownika. Interfejsy API obejmują też zaawansowane funkcje, takie jak manipulowanie czasem. Używaj tych interfejsów API do tworzenia solidnych testów, które weryfikują działanie aplikacji.

Wyświetlenia

Jeśli zamiast Compose używasz widoków, zapoznaj się z ogólną sekcją Testowanie aplikacji na Androidzie.

Dobrym punktem wyjścia jest przewodnik Automatyzacja testów interfejsu. Opisuje, jak zautomatyzować testy przeprowadzane na urządzeniu, w tym testy z użyciem widoków.

Kluczowe pojęcia

Oto kilka kluczowych pojęć związanych z testowaniem kodu Compose:

  • Semantyka: semantyka nadaje znaczenie interfejsowi, umożliwiając testom interakcję z określonymi elementami.
  • Interfejsy API do testowania: umożliwiają znajdowanie elementów, sprawdzanie ich atrybutów i wykonywanie działań użytkownika.
  • Synchronizacja: synchronizacja sprawdza, czy testy czekają na bezczynność interfejsu przed wykonaniem działań lub dokonaniem asercji.
  • Interoperacyjność: interoperacyjność umożliwia testom działanie zarówno z elementami opartymi na Compose, jak i na widokach w tej samej aplikacji.

Arkusz z informacjami o testowaniu

arkuszu z przydatnymi informacjami o testowaniu znajdziesz omówienie wszystkich najważniejszych tematów, które warto poznać, aby testować aplikacje napisane w Compose.

Konfiguracja

Skonfiguruj aplikację, aby umożliwić testowanie kodu kompozycji.

Najpierw dodaj te zależności do pliku build.gradle modułu zawierającego testy interfejsu:

// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")

Moduł ten zawiera ComposeTestRule i implementację na Androida o nazwie AndroidComposeTestRule. Za pomocą tej reguły możesz ustawić tworzenie treści lub dostęp do aktywności. Reguły tworzysz za pomocą funkcji fabrycznych: createComposeRule lub, jeśli potrzebujesz dostępu do aktywności, createAndroidComposeRule. Typowy test interfejsu w Compose wygląda tak:

// file: app/src/androidTest/java/com/package/MyComposeTest.kt

class MyComposeTest {

    @get:Rule val composeTestRule = createComposeRule()
    // use createAndroidComposeRule<YourActivity>() if you need access to
    // an activity

    @Test
    fun myTest() {
        // Start the app
        composeTestRule.setContent {
            MyAppTheme {
                MainScreen(uiState = fakeUiState, /*...*/)
            }
        }

        composeTestRule.onNodeWithText("Continue").performClick()

        composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
    }
}

Dodatkowe materiały

  • Testowanie aplikacji na Androida: główna strona docelowa dotycząca testowania na Androidzie zawiera szersze omówienie podstaw testowania i technik testowania.
  • Podstawy testowania: dowiedz się więcej o podstawowych koncepcjach związanych z testowaniem aplikacji na Androida.
  • Testy lokalne: niektóre testy możesz przeprowadzać lokalnie, na własnej stacji roboczej.
  • Testy z użyciem instrumentacji: warto też przeprowadzać testy z użyciem instrumentacji. Są to testy, które są przeprowadzane bezpośrednio na urządzeniu.
  • Ciągła integracja: Ciągła integracja umożliwia zintegrowanie testów z potokiem wdrażania.
  • Testowanie różnych rozmiarów ekranu: użytkownicy mają do dyspozycji wiele urządzeń, dlatego warto testować różne rozmiary ekranu.
  • Espresso: chociaż Espresso jest przeznaczony do interfejsów opartych na widokach, wiedza na jego temat może być przydatna w przypadku niektórych aspektów testowania Compose.

Ćwiczenia z programowania

Więcej informacji znajdziesz w samouczku dotyczącym testowania Jetpack Compose.

Próbki