CodeBlanks Logo Icon CodeBlanks

İlk test yazma

PHP kursu · İleri seviye · Ders 75/92

PHPUnit'de test sınıfı ve test methodu oluşturmayı öğrenirsin.

İlk test yazma

Bir test metodu yalnızca tek bir davranışı sınar. public function testAdd(): void ile başlar; içinde bir ya da birkaç iddia (assertion) yer alır. İddia başarısız olursa PHPUnit o testi başarısız sayar. İyi bir testin adı neyi sınadığını söyler: testAdd, testEmptyCart, testNegativeAgeThrows. test öneki zorunludur; @test annotation ile de işaretlenebilir ama önek daha yaygındır.

@test annotation ve adlandırma

test öneki yerine @test annotation da kullanılabilir: yöntemin üstüne /** @test */ yazılır; böylece yöntem adı test ile başlamasa bile PHPUnit onu test sayar. Ama karışıklığı önlemek için genelde yalnızca bir biçim seçilir. Ekipler çoğunlukla test önekini tercih eder çünkü metod adında testi görmek daha kolaydır. İki biçimi aynı sınıfta karıştırmaktan kaçın.

Uygulama İlk testini yaz

ShoppingCart sınıfının add metodu ürün ekler. ShoppingCartTest sınıfını TestCase'ten türet. testAddItem metodu yaz: yeni bir ShoppingCart oluştur, "Ekmek" ekle, ardından assertEquals ile count'un 1 olduğunu denetle.

Örnek çözümü göster
class ShoppingCartTest extends TestCase yaz. testAddItem içinde new ShoppingCart(), $cart->add("Ekmek"), $this->assertEquals(1, $cart->count()) ekle.
Örnek çözüm:
<?php
// Bu derste TestCase'i basitçe tanımlıyoruz
class TestCase {
    protected function assertEquals($expected, $actual): void {
        if ($expected !== $actual) {
            throw new Exception("Beklenen $expected, gerçek $actual");
        }
    }
}

class ShoppingCart {
    private array $items = [];
    public function add(string $item): void { $this->items[] = $item; }
    public function count(): int { return count($this->items); }
}

class ShoppingCartTest extends TestCase {
    public function testAddItem(): void {
        $cart = new ShoppingCart();
        $cart->add("Ekmek");
        $this->assertEquals(1, $cart->count());
    }
}

// Testi çalıştır
$test = new ShoppingCartTest();
$test->testAddItem();
echo "testAddItem: BAŞARILI\n";

Kendini test et

  1. Test metodu adını yaz

    <?php
    
    class CartTest extends TestCase {
        public function ____(): void {
            $this->assertEquals(0, 0);
        }
    }
    
    Cevabı göster
    <?php
    
    class CartTest extends TestCase {
        public function testEmpty(): void {
            $this->assertEquals(0, 0);
        }
    }
    
  2. Hangisi geçerli bir test metodudur?

    • public function testAdd(): void
    • public function Add(): void
    • public function _testAdd(): void
    • private function testAdd(): void
    Cevabı göster

    public function testAdd(): void — Doğru. test öneki ve public erişim test metodu için yeterlidir.

  3. Adlandırma biçimlerini eşleştir

    testAdd
    Toplama sınaması
    testEmpty
    Boş durum sınaması
    @test
    Annotation
    public function
    Erişim bildirimi

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