Kotlin Academy · Ders

JUnit5 ile Test Yazma

Testleri yapılandırın

1. ders / 413 adım

JUnit5 ile Test Yazma, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

JUnit5 nedir?

JUnit5 (JUnit Jupiter), JVM ve Kotlin için standart test çatısıdır. Test kodunu işaretlemek ve yapılandırmak için ek açıklamalar sağlar.

  • Testler src/test/kotlin içinde bulunur
  • Her test bir işlevdir
  • Çalıştırıcı bunları yürütür ve sonuçları bildirir

Bağımlılık ekleme

JUnit Jupiter'ı test yapılandırmanıza ekleyin ve JUnit platformunu etkinleştirin.

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
}

tasks.test {
    useJUnitPlatform()
}

İlk testiniz

Bir işlevi @Test ile işaretleyin. Test, kodunuzla ilgili bir şeyi doğrular.

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Assertions.assertEquals

class MathTest {
    @Test
    fun addsTwoNumbers() {
        assertEquals(4, 2 + 2)
    }
}

Açıklayıcı test adları

Uzun işlev adları kullanmadan okunabilir test raporları oluşturmak için @DisplayName kullanın.

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.DisplayName

class OrderTest {
    @Test
    @DisplayName("total includes tax")
    fun totalWithTax() {
        // ...
    }
}

@BeforeEach ile hazırlık

@BeforeEach, her testten önce çalışır ve yeni test verileri oluşturmak için idealdir. @AfterEach ise temizlik amacıyla her testten sonra çalışır.

import org.junit.jupiter.api.BeforeEach

class CartTest {
    private lateinit var cart: MutableList<String>
    @BeforeEach
    fun setUp() {
        cart = mutableListOf()
    }
}

Sınıf düzeyinde hazırlık

@BeforeAll ve @AfterAll, sınıfın tamamı için bir kez çalışır. Kotlin'de bunlar, @JvmStatic içeren bir eşlikçi nesneyle (veya sınıf başına yaşam döngüsüyle) kullanılmalıdır.

import org.junit.jupiter.api.BeforeAll

class DbTest {
    companion object {
        @BeforeAll
        @JvmStatic
        fun connect() {
            // open shared connection
        }
    }
}

Hazırla-Uygula-Doğrula

Her testi üç açık aşamada yapılandırın:

  • Hazırla — girdileri ve durumu ayarlayın
  • Uygula — test edilen kodu çağırın
  • Doğrula — sonucu doğrulayın

Bu yaklaşım testlerin okunabilir ve odaklı kalmasını sağlar.

İç içe testler

@Nested, ilişkili testleri gruplandırır ve davranışı belgeleyen ağaç biçimli bir rapor oluşturur.

import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test

class StackTest {
    @Nested
    inner class WhenEmpty {
        @Test fun isEmpty() { /* ... */ }
    }
}

Parametreli testler

@ParameterizedTest ve bir değer kaynağı kullanarak aynı testi birden çok girdiye uygulayın.

import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import org.junit.jupiter.api.Assertions.assertTrue

class NumberTest {
    @ParameterizedTest
    @ValueSource(ints = [2, 4, 6])
    fun isEven(n: Int) {
        assertTrue(n % 2 == 0)
    }
}

Devre dışı bırakma ve etiketleme

Bir testi geçici olarak atlamak için @Disabled, testleri gruplandırmak için @Tag kullanın. Böylece sürekli tümleştirme çalıştırmalarında bunları dahil edebilir veya hariç tutabilirsiniz.

import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test

class FlakyTest {
    @Test
    @Disabled("fix later")
    @Tag("slow")
    fun pending() { }
}

Tek başına çalışan bir örnek

Burada basit bir saf Kotlin işlevi ve bunu test etmenin temel fikri yer alıyor (testin kendisi JUnit altında çalışır).

fun add(a: Int, b: Int): Int = a + b

fun main() {
    val result = add(2, 3)
    println(if (result == 5) "PASS" else "FAIL")
}

Hızlı kontrol

Her test yönteminden önce yeni ve boş bir listeye ihtiyacınız var. Hangi ek açıklama uygundur?

Özet

JUnit5 testlerini şu şekilde yapılandırabilirsiniz:

  • @Test testleri işaretler, @DisplayName testlere ad verir
  • @BeforeEach / @BeforeAll hazırlığı yönetir
  • Hazırla-Uygula-Doğrula yaklaşımı testleri açık tutar
  • @Nested ve @ParameterizedTest testleri düzenler ve ölçeklendirir

Sonraki konu: doğrulamalar.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“JUnit5 ile Test Yazma” dersi ücretsiz mi?

Evet — “JUnit5 ile Test Yazma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“JUnit5 ile Test Yazma” dersinde ne öğreneceğim?

Testleri yapılandırın Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“JUnit5 ile Test Yazma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. JUnit5 ile Test Yazma
  2. Doğrulamalar
  3. MockK ile Taklitler
  4. Korutin Testi
← Kotlin Academy Sayfasına Dön