İlk test yazma
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
-
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); } } -
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.
-
Adlandırma biçimlerini eşleştir
- testAdd
- Toplama sınaması
- testEmpty
- Boş durum sınaması
- @test
- Annotation
- public function
- Erişim bildirimi