CodeBlanks Logo Icon CodeBlanks

Özet - Test temelleri

PHP kursu · İleri seviye · Ders 80/92

PHPUnit, assertion ve mock'la bir hesap sınıfı için test paketi yazarsın.

Özet - Test temelleri

Bu grupta test temellerinin altı taşını gördün: PHPUnit birim testleri çalıştırır, TestCase test sınıfının temelidir, assertEquals/assertTrue gibi iddialar sonucu denetler, AAA deseni testi düzenler, mock/stub bağımlıkları izole eder, setUp/tearDown ortak hazırlığı yönetir. Son adımda bu fikirleri birleştirip kendi basit test koşturucumuzu yazacağız: PHPUnit yüklü olmasa bile iddiaları denetleyen küçük bir araç.

Kendi test koşturucumuz

PHPUnit yüklü olmadan da test mantığını görmek için kendi koşturucumuzu yazabiliriz. assertEquals gibi işlevler bir koşulu sınar, başarısızsa hata fırlatır. runTest işlevi testi çağırır, başarılıysa adını yazar, başarısızsa hatayı gösterir. Bu yaklaşım PHPUnit'in içini anlamaya yardımcı olur; gerçekte PHPUnit çok daha fazlasını yapar: paralel çalıştırma, çıktı yakalama, kapsam ölçümü.

Uygulama Kendi test koşturucunu yaz

Kendi test koşturucunu yaz. assertEquals işlevi iki değeri karşılaştırır, eşit değilse Exception fırlatır. runTest işlevi çağrılabilir bir test alır, başarılı olursa adını BAŞARILI ile yazar, başarısız olursa hatanın mesajını yazar. Sonra runTest ile "testAdd" adında bir test çağır; assertEquals(4, 2 + 2) denetlesin.

Örnek çözümü göster
void { if ($expected !== $actual) throw new Exception("Beklenen $expected, gerçek $actual"); } yaz. function runTest(callable $test, string $name): void { try { $test(); echo "$name: BAŞARILI\n"; } catch (Exception $e) { echo "$name: BAŞARISIZ - " . $e->getMessage() . "\n"; } } Sonra runTest(function () { assertEquals(4, 2 + 2); }, "testAdd"); ekle.
Örnek çözüm:
<?php
// assertEquals ve runTest işlevlerini yaz
function assertEquals($expected, $actual): void {
    if ($expected !== $actual) {
        throw new Exception("Beklenen $expected, gerçek $actual");
    }
}

function runTest(callable $test, string $name): void {
    try {
        $test();
        echo "$name: BAŞARILI\n";
    } catch (Exception $e) {
        echo "$name: BAŞARISIZ - " . $e->getMessage() . "\n";
    }
}

// testAdd testini runTest ile çağır
runTest(function () {
    assertEquals(4, 2 + 2);
}, "testAdd");

Kendini test et

  1. Altı taşı eşleştir

    TestCase
    Temel sınıf
    assertEquals
    İddia
    AAA
    Test düzeni
    Mock
    Sahte nesne
    setUp
    Hazırlık
  2. Hata yakalama satırını tamamla

    <?php
    function assertEquals($expected, $actual): void {
        if ($expected !== $actual) {
            throw new Exception("Beklenen $expected, gerçek $actual");
        }
    }
    
    function runTest(callable $test, string $name): void {
        try {
            $test();
            echo "$name: BAŞARILI\n";
        } catch (Exception $e) {
            echo "$name: BAŞARISIZ - " . $e->____() . "\n";
        }
    }
    
    Cevabı göster
    <?php
    function assertEquals($expected, $actual): void {
        if ($expected !== $actual) {
            throw new Exception("Beklenen $expected, gerçek $actual");
        }
    }
    
    function runTest(callable $test, string $name): void {
        try {
            $test();
            echo "$name: BAŞARILI\n";
        } catch (Exception $e) {
            echo "$name: BAŞARISIZ - " . $e->getMessage() . "\n";
        }
    }
    

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