design

Laravel’de Test Yazma: PHPUnit ile Test Otomasyonu

March 23, 2025

Merhaba arkadaşlar, bugün sizlere Laravel’de test yazma ve PHPUnit ile nasıl test otomasyonu yapabileceğinizi anlatacağım. Test yazmak, uygulamanızın güvenilirliğini artırır ve hataları erken aşamada yakalamanızı sağlar. Laravel, PHPUnit ile entegre bir şekilde gelir ve test yazmayı oldukça kolaylaştırır. Gelin, bu süreci adım adım inceleyelim.


Test Yazmanın Önemi

  • Hata Önleme: Testler, uygulamanızda olası hataları erken aşamada tespit etmenizi sağlar.
  • Güvenilirlik: Test edilmiş bir uygulama, daha güvenilir ve sürdürülebilir olur.
  • Zaman Tasarrufu: Otomatik testler, manuel test sürecini hızlandırır ve zaman kazandırır.

Laravel’de Test Türleri

Laravel, iki temel test türü sunar:

  1. Unit Test (Birim Testi): Tek bir sınıf veya metodun doğru çalışıp çalışmadığını kontrol eder.
  2. Feature Test (Özellik Testi): Uygulamanın belirli bir özelliğinin doğru çalışıp çalışmadığını kontrol eder.

Laravel’de Test Yazma Adımları

Test Dosyası Oluşturma

 Laravel’de test dosyaları tests dizini altında bulunur. Yeni bir test dosyası oluşturmak için aşağıdaki komutu kullanabilirsiniz:


php artisan make:test UserTest


Bu komut, tests/Feature/UserTest.php dosyasını oluşturacaktır. Eğer bir unit test dosyası oluşturmak istiyorsanız, --unit parametresini ekleyin:


php artisan make:test UserTest --unit


Unit Test Yazma

Unit test, genellikle tek bir sınıf veya metodun doğru çalışıp çalışmadığını kontrol eder. Örneğin, bir matematik işlemi yapan bir sınıfı test edelim:


namespace Tests\Unit;use Tests\TestCase;use App\Services\MathService;class MathServiceTest extends TestCase{    public function test_add_two_numbers()    {        $mathService = new MathService();        $result = $mathService->add(2, 3);        $this->assertEquals(5, $result);    }}


Feature Test Yazma

Feature test, uygulamanın belirli bir özelliğinin doğru çalışıp çalışmadığını kontrol eder. Örneğin, bir kullanıcının kayıt olma işlemini test edelim:


namespace Tests\Feature;use Tests\TestCase;use 

Illuminate\Foundation\Testing\RefreshDatabase;class UserRegistrationTest extends TestCase{
   use RefreshDatabase;   

  public function test_user_can_register()    {  
      $response = $this->post('/register', [  
      'name' => 'John Doe',      
      'email' => 'john@example.com',        
      'password' => 'password',        
      'password_confirmation' => 'password',       
 ]);     
    $response->assertStatus(302);      
  $this->assertDatabaseHas('users', [    
        'email' => 'john@example.com',   
     ]);    

}}


Testleri Çalıştırma

Testleri çalıştırmak için aşağıdaki komutu kullanabilirsiniz:


php artisan test


Bu komut, tüm test dosyalarını çalıştıracak ve sonuçları ekranda gösterecektir.

Laravel’de Test Yazmanın Avantajları

  • Hata Önleme: Testler, uygulamanızda olası hataları erken aşamada tespit etmenizi sağlar.
  • Güvenilirlik: Test edilmiş bir uygulama, daha güvenilir ve sürdürülebilir olur.
  • Zaman Tasarrufu: Otomatik testler, manuel test sürecini hızlandırır ve zaman kazandırır.

Test Yazarken Dikkat Edilmesi Gerekenler

  • Test Kapsamı: Testlerinizin kapsamını doğru belirleyin. Her birim ve özellik için ayrı testler yazın.
  • Test Verileri: Test verilerinizi doğru şekilde hazırlayın. Laravel’in RefreshDatabase trait’i, her testten sonra veritabanını sıfırlar.
  • Assertion’lar: Doğru assertion’ları kullanarak test sonuçlarını kontrol edin.


Laravel’de test yazmak, uygulamanızın güvenilirliğini artırmanın en etkili yollarından biridir. PHPUnit ile kolayca test otomasyonu yapabilir ve hataları erken aşamada yakalayabilirsiniz. Bir sonraki yazımda, Laravel’de Middleware Kullanımı ve Özelleştirme konusuna değineceğim. Görüşmek üzere!

1 + 1 =