CodeBlanks Logo Icon CodeBlanks

Özet - JUnit test

@Test, assertEquals ve @ParameterizedTest'i birleştirerek bir hesap makinesi testi yazarsın.

Özet - JUnit test

Bu grupta JUnit 5'in temellerini gördün: @Test ile test yöntemi, assertEquals ve assertThrows ile doğrulama, @BeforeEach ile kurulum, @ParameterizedTest ile çoklu girdi ve @DisplayName ile okunabilir adlar.

Şimdi bunları bir mini göreve birleştireceksin: bir Calculator sınıfı için dört işlem testi yazacaksın. Önceki derslerin tümünden parçalar kullanacaksın. Bu özet, gerçek birim testlerinin nasıl yazıldığını gösterir.

Uygulama Calculator testlerini yaz

Bir Calculator sınıfı tanımla; add(int a, int b) ve divide(int a, int b) yöntemleri olsun (divide sıfıra bölmede ArithmeticException fırlatsın). CalculatorTest sınıfında @Test ile testAdd ve testDivide yöntemleri yaz; assertEquals(7, c.add(3, 4)) ve assertEquals(2, c.divide(10, 5)) çağır. Bir main metodu ekle ve add(3, 4) sonucunu yazdır.

Başlangıç kodu

Main.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

// Calculator sınıfını tanımla (add ve divide)

// CalculatorTest sınıfında testAdd ve testDivide yaz

// main metodu ekle ve add(3, 4) sonucunu yazdır

Örnek çözüm

Main.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    int divide(int a, int b) {
        return a / b;
    }
}

class CalculatorTest {
    @Test
    void testAdd() {
        Calculator c = new Calculator();
        assertEquals(7, c.add(3, 4));
    }

    @Test
    void testDivide() {
        Calculator c = new Calculator();
        assertEquals(2, c.divide(10, 5));
    }

    public static void main(String[] args) {
        Calculator c = new Calculator();
        System.out.println(c.add(3, 4));
    }
}

Beklenen çıktı

7

Uygulama Parametreli toplama testi ekle

Yeni bir ParameterTest sınıfı tanımla. @ParameterizedTest ve @CsvSource({"2, 3, 5", "4, 4, 8"}) ile işaretli testAdd yöntemi yaz; int a, int b, int expected parametreleri alıp assertEquals(expected, a + b) çağrılsın. Bir main metodu ekle; (2,3) ve (4,4) çiftlerini döngüde topla ve beklenen değerlerle eşleşme sayısını yazdır.

Başlangıç kodu

Main.java
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;

// ParameterTest sınıfını tanımla

// parametreli test annotation'ı ve Csv kaynağı annotation'ı ile testAdd yaz

// main metodu ekle ve eşleşme sayısını yazdır

Örnek çözüm

Main.java
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;

class ParameterTest {
    @ParameterizedTest
    @CsvSource({"2, 3, 5", "4, 4, 8"})
    void testAdd(int a, int b, int expected) {
        assertEquals(expected, a + b);
    }

    public static void main(String[] args) {
        int matches = 0;
        int[][] pairs = {{2, 3, 5}, {4, 4, 8}};
        for (int[] p : pairs) {
            if (p[0] + p[1] == p[2]) matches++;
        }
        System.out.println(matches);
    }
}

Beklenen çıktı

2

Soru ve cevaplar

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

1 Bir test yönteminin başarısız olduğunu nasıl anlarsın?

  • Sınıf derlenmediğinde
  • main metodu yoksa
  • @Test yoksa
  • Assertion istisna fırlattığında Doğru cevap

Açıklama: Assertion başarısız olursa istisna fırlatır ve test başarısız sayılır.

2 JUnit 5 özetini eşleştir

Kavram Anlamı
@Test Yöntemi test yapar
assertEquals Değer karşılaştırır
@BeforeEach Her testten önce kurar
@ParameterizedTest Çoklu girdi çalıştırır

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