CodeBlanks Logo Icon CodeBlanks

Test coroutine

runTest ile coroutine test öğrenirsin.

runTest ile coroutine test

runTest, kotlinx-coroutines-test kütüphanesinde bir test builder'dır. suspend fonksiyonları test etmek için bir TestScope açar ve gerçek zaman beklemeden sanal zaman kullanır.

Örnek: @Test fun testFetch() = runTest { val result = fetchUser(1); assertEquals("Ayşe", result) }. runTest bloğu içinde suspend çağrılar normal fonksiyon gibi yazılır; delay anında atlanır. Bu yüzden coroutine testleri hızlı ve deterministik çalışır.

TestScope ve delay atlama

runTest bir TestScope döndürür. Bu scope içinde suspend fonksiyonlar normal bir fonksiyon gibi çağrılır. delay çağrıları otomatik olarak atlanır; gerçek bekleme olmaz.

Test için kotlinx-coroutines-test bağımlılığı gerekir. import kotlinx.coroutines.test.runTest ile içe aktarılır. assertEquals ile beklenen değeri kontrol edersin. Bu kalıp, coroutine testlerini hızlı ve öngörülebilir kılar.

Uygulama suspend fonksiyonu runTest ile test et

fetchUser(id: Int): String adında bir suspend fonksiyon tanımla; id 1 için "Ayşe" döndürsün. main içinde runTest bloğu aç ve fetchUser(1) sonucunu println ile yazdır.

Başlangıç kodu

Main.kt
import kotlinx.coroutines.test.runTest

// suspend fonksiyon: id 1 için Ayşe döndür
// main'de runTest bloğu aç ve sonucu yazdır

Örnek çözüm

Main.kt
import kotlinx.coroutines.test.runTest

suspend fun fetchUser(id: Int): String {
    return "Ayşe"
}

fun main() = runTest {
    println(fetchUser(1))
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 runTest bloğu içinde aşağıdakilerden hangisi doğrudan yapılabilir?

  • Sadece senkron fonksiyon çağrısı
  • suspend fonksiyon çağrısı Doğru cevap
  • Sadece UI çizimi
  • Yalnızca dosya okuma

Açıklama: runTest bir TestScope sağlar; suspend çağrılar doğrudan yapılır.

2 runTest bloğunu tamamla

Soru
@Test
fun testFetch() = ____ {
    val result = fetchUser(1)
    assertEquals("Ayşe", result)
}
Cevap
@Test
fun testFetch() = runTest {
    val result = fetchUser(1)
    assertEquals("Ayşe", result)
}

Açıklama: runTest, suspend fonksiyonlar için TestScope açar.

3 runTest parçalarını eşle

Kavram Anlamı
runTest { } Test builder
TestScope Sağlanan scope
suspend fetch() Çağrılan fonksiyon
delay Atlanan bekleme

İleri seviye bölümündeki tüm dersler