Kotlin Multiplatform Academy · Lekcja

Testowanie funkcji suspend i Flow

Używaj runTest i Turbine do sprawdzania zachowania asynchronicznego.

Lekcja 2 z 413 kroki

Testowanie funkcji suspend i Flow to bezpłatna lekcja Kotlin Multiplatform Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Multiplatform Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Multiplatform Academy zawiera 4 lekcji w sumie.

Kod asynchroniczny wymaga specjalnych testów

Funkcje zawieszane i obiekty Flow nie kończą działania natychmiast, dlatego potrzebujesz narzędzi, które zaczekają na zakończenie pracy asynchronicznej przed wykonaniem asercji. ⏳

Poznaj runTest

Umieść asercje asynchroniczne w runTest z biblioteki coroutines-test; funkcja ta udostępnia zakres i automatycznie pomija wirtualne opóźnienia.

@Test
fun loadsUser() = runTest {
    val u = repo.load(1)
    assertEquals("Sam", u.name)
}

Dodaj pomocnik testowy

Dodaj kotlinx-coroutines-test do commonTest, aby runTest i powiązane narzędzia były dostępne na każdym celu.

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")

Oczekiwanie na wynik funkcji zawieszanej

Wewnątrz runTest wystarczy bezpośrednio wywołać funkcję suspend i sprawdzić to, co zwróci.

val total = calc.fetchTotal()
assertEquals(42, total)

Przeskoki w czasie za darmo

runTest korzysta z wirtualnego czasu, więc delay trwający kilka sekund kończy się natychmiast, a testy pozostają szybkie.

Ręczne testowanie Flow

Można zebrać skończony Flow do listy za pomocą toList i sprawdzić wyemitowane wartości.

val values = numbers().toList()
assertEquals(listOf(1, 2, 3), values)

Dlaczego Turbine pomaga

W przypadku ciągłych strumieni biblioteka Turbine pozwala oczekiwać na elementy pojedynczo, bez ręcznego przygotowywania obsługi kolekcjonowania.

Dodawanie Turbine

Dodaj Turbine do commonTest. To niewielkie, wieloplatformowe narzędzie pomocnicze stworzone specjalnie do testowania Flow.

implementation("app.cash.turbine:turbine:1.1.0")

Oczekiwanie na elementy za pomocą test

Turbine opakowuje Flow w blok test, w którym awaitItem zwraca kolejne emisje w odpowiedniej kolejności.

flow.test {
    assertEquals(1, awaitItem())
    awaitComplete()
}

Poprawne kończenie strumienia

Każdy blok Turbine należy zakończyć za pomocą awaitComplete albo anulować. W przeciwnym razie test zakończy się niepowodzeniem z powodu nieodczytanych zdarzeń.

Sprawdzanie aktualizacji StateFlow

Turbine świetnie sprawdza się w przypadku StateFlow: należy odczekać na wartość początkową, wywołać akcję, a następnie odczekać na kolejny wyemitowany stan.

Szybkie sprawdzenie

Wybierz właściwe opakowanie do testowania kodu asynchronicznego.

Podsumowanie

Używaj runTest do kodu suspend oraz bloku test biblioteki Turbine do oczekiwania na emisje Flow — wszystko w commonTest.

Bezpłatny start

Ucz się Kotlin dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Testowanie funkcji suspend i Flow” jest bezpłatna?

Tak — pełny tekst „Testowanie funkcji suspend i Flow” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Multiplatform Academy, przejdź na CoddyKit PRO. Kurs Kotlin Multiplatform Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Testowanie funkcji suspend i Flow”?

Używaj runTest i Turbine do sprawdzania zachowania asynchronicznego. Ćwiczysz Kotlin Multiplatform Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Multiplatform Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Multiplatform Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Testowanie funkcji suspend i Flow”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Multiplatform Academy?

Tak. Każda lekcja Kotlin Multiplatform Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. kotlin.test w commonTest
  2. Testowanie funkcji suspend i Flow
  3. Atrapy klienta Ktor i repozytoriów
  4. Uruchamianie testów dla celów Androida i iOS
← Powrót do Kotlin Multiplatform Academy