1 Şubat 2026 Pazar

PHPUnit ile Birim Testlerine Giriş

Merhaba Webkolog dostları, bugün yazılım geliştirme sürecinin en kritik ama bazen en çok ihmal edilen konularından birine değineceğiz: Birim Testleri (Unit Testing). Projelerimiz büyüdükçe, bir yerde yaptığımız değişikliğin başka bir yeri bozup bozmadığını kontrol etmek tam bir kabusa dönüşebilir. İşte tam bu noktada imdadımıza PHPUnit yetişiyor.

Peki, neden bu zahmete giriyoruz? Aslında yanıt çok basit: Özgüven. Kodunuzu canlıya alırken "Acaba bir yeri bozdum mu?" korkusu yaşamamak ve bir ay sonra koda geri döndüğünüzde her şeyin hala tıkır tıkır çalıştığını 1 saniyede anlamak için test yazıyoruz. Ayrıca test edilebilir kod yazmaya çalışmak, sizi ister istemez daha temiz ve düzenli kod yazmaya teşvik eder.

1. Kurulum ve Hazırlık

PHP projelerimizde kütüphane yönetimi için bildiğiniz gibi Composer kullanıyoruz. Bilgisayarınızda Composer'ın yüklü olduğunu varsayarak, proje klasörünüzde terminali açıp şu komutu çalıştırmanız yeterli:

composer require --dev phpunit/phpunit

Buradaki --dev eki çok önemli. Bu kütüphane bize sadece geliştirme aşamasında lazım; canlı sunucumuzda (production) yer kaplamasına gerek yok.

2. Test Edilecek Bir Sınıf Oluşturalım

Test yapabilmek için önce elimizde test edilecek bir "birim" (unit) olmalı. Basit bir hesap makinesi sınıfı üzerinden ilerleyelim. src/Calculator.php dosyamızı oluşturalım:

 namespace App;

class Calculator { public function add($a, $b) { return $a + $b; } } 
3. İlk Test Dosyamızın Yazımı

Test dosyalarımızı genellikle tests klasörü altında topluyoruz ve isimlerinin mutlaka Test.php ile bitmesi gerekiyor. Şimdi tests/CalculatorTest.php dosyasını oluşturalım:

 use PHPUnit\Framework\TestCase; use App\Calculator;

class CalculatorTest extends TestCase { public function testAddFunction() { $calc = new Calculator(); // 1. Hazırlık (Arrange) $result = $calc->add(2, 3); // 2. Çalıştırma (Act)

    // 3. Kontrol Etme (Assert)
    $this->assertEquals(5, $result); 
}
} 

Burada ne yaptık? TestCase sınıfını genişleterek PHPUnit'in yeteneklerini devraldık. assertEquals(beklenen, gerçek) metodu ile "Eğer sonuç 5 ise test geçer, değilse kalır" dedik.

4. AAA Kuralı: Test Yazım Standartı

Birim test yazarken zihninizde şu üç aşamayı (AAA) tutmanız işinizi çok kolaylaştırır:

Aşama İngilizce Açıklama
Hazırla Arrange Nesneleri oluştur, verileri hazırla.
Eyleme Geç Act Test etmek istediğin metodu çağır.
Denetle Assert Çıkan sonuç beklediğin şey mi?
5. Testleri Çalıştırma

Terminalinize şu komutu yazarak testlerinizi koşturabilirsiniz:

./vendor/bin/phpunit tests

Eğer her şey doğruysa terminalde yeşil bir bar veya "OK (1 test, 1 assertion)" yazısını göreceksiniz. Eğer 5 yerine yanlışlıkla 6 bekleseydik, PHPUnit size nerenin hatalı olduğunu kırmızı harflerle söyleyecekti.

PHPUnit dünyasına giriş bu kadar basit! İlerleyen yazılarımda projelerimizdeki devre elemanlarını (sınıfları ve metodları) tek tek nasıl test edeceğimizi daha detaylı ele alacağım.

Webkolog'u takipte kalın!

Hepinize hatasız ve başarılı kodlama deneyimleri dilerim!

0 yorum:

Yorum Gönder