PHP 7.4 ile birim testi (unit testing) nasıl yapılır? (PHPUnit)

PHPUnit Nedir?

PHPUnit, PHP uygulamaları için geliştirilen bir birim test framework’üdür. Birim testleri, yazılım geliştirme sürecinde yazılan kodun işlevlerinin doğru çalışıp çalışmadığını kontrol etmek amacıyla bağımsız olarak test edilen en küçük kod birimlerini ifade eder. PHPUnit, bu testlerin yazımını kolaylaştırır ve otomatikleştirir, bu sayede geliştiriciler kodlarını daha güvenilir şekilde test edebilir.

Kurulum

PHPUnit’i kurmak için Composer kullanılabilir. Composer, PHP için bir bağımlılık yöneticisidir. İlk olarak Composer’ın sistemde kurulu olduğundan emin olunmalıdır. Daha sonra, projenin kök dizininde aşağıdaki komut çalıştırılarak PHPUnit kurulumu gerçekleştirilir:

“`
composer require –dev phpunit/phpunit
“`

Bu komut, PHPUnit’i proje bağımlılıkları arasına ekler. Kurulum tamamlandığında, proje dizininde “vendor/bin/phpunit” yoluyla PHPUnit çalıştırılabilir.

Test Sınıfı Oluşturma

Birim testleri yazmak için öncelikle test sınıfı oluşturulmalıdır. Test sınıfı, PHPUnit kütüphanesine dayalı olarak bir veya daha fazla test metodu içerir. Test sınıfı genellikle `PHPUnit\Framework\TestCase` sınıfından türetilir. Aşağıdaki örnek, basit bir matematik sınıfı ve bu sınıfa ait birim testlerinin nasıl yazılacağını göstermektedir.

“`php
// Math.php
class Math {
public function add($a, $b) {
return $a + $b;
}
}
“`

“`php
// MathTest.php
use PHPUnit\Framework\TestCase;

class MathTest extends TestCase {
public function testAdd() {
$math = new Math();
$this->assertEquals(4, $math->add(2, 2));
$this->assertEquals(0, $math->add(-1, 1));
}
}
“`

Yukarıdaki örnekte, `Math` sınıfı iki sayının toplamını döndüren `add` metodunu içerir. `MathTest` adı verilen test sınıfı ise bu metodu test eden birim testlerini barındırır. `testAdd` metodu, `assertEquals` yöntemi ile beklenen sonuçların kontrolünü sağlar.

Testlerin Çalıştırılması

Testlerin çalıştırılması için, terminalden PHPUnit komutları kullanılabilir. Aşağıdaki komut, belirtilen test dosyasını çalıştırır:

“`
vendor/bin/phpunit MathTest.php
“`

Testlerin başarılı veya başarısız olduğu bilgisi konsolda görüntülenecektir. PHPUnit, başarılı olan testleri yeşil, başarısız olanları ise kırmızı renkte göstererek, hızlı bir görsel geri bildirim sağlar.

Test Senaryolarının Geliştirilmesi

PHPUnit, daha karmaşık test senaryolarını yönetmek için çeşitli yöntemler ve özellikler sunar. `setUp` ve `tearDown` metotları ile her test öncesi veya sonrası yapılması gereken işlemler tanımlanabilir. Örneğin, belirli bir ortamı hazırlamak veya oluşturulan nesneleri temizlemek için bu metotlar kullanılabilir.

“`php
protected function setUp(): void {
$this->math = new Math();
}

protected function tearDown(): void {
unset($this->math);
}
“`

Veri Sağlama ile Test Yazma

PHPUnit, veri sağlayıcı (data provider) kullanarak aynı test metodu üzerinden birden fazla koşulun test edilmesine olanak tanır. Aşağıdaki örnek, aynı `add` metodunu farklı girişlerle test etmek için veri sağlayıcı kullanımını göstermektedir.

“`php
/
@dataProvider additionProvider
/
public function testAdd($a, $b, $expected) {
$this->assertEquals($expected, $this->math->add($a, $b));
}

public function additionProvider() {
return [
[1, 1, 2],
[2, 2, 4],
[-1, 1, 0],
[-1, -1, -2],
];
}
“`

Mocking

Mocking, nesnelerin yerine geçici “mock” nesneler oluşturarak testlerin izole edilmesine olanak tanır. PHPUnit, bağımlılıkları taklit etmek için `createMock` yöntemini sunar.

“`php
$mock = $this->createMock(SomeClass::class);
$mock->method(‘someMethod’)->willReturn(‘mocked value’);
“`

Mocking, bir test sırasında dış bağımlılıkların etkisini azaltarak, testin güvenilirliğini artırır.

Test Koşulları ve Beklentiler

Test yazarken, çeşitli koşullar için beklenen çıktı ile karşılaştırmalar yapılmalıdır. PHPUnit, farklı asserter metodları sunarak sonuçların beklentilerle karşılaştırılmasını sağlar. `assertTrue`, `assertFalse`, `assertCount`, gibi çeşitli asserterler kullanılarak farklı durumlar kontrol edilebilir.

Sonuç

PHPUnit, PHP 7.4 ile birim testleri yazmanın ve yönetmenin etkili bir yolunu sunar. Test odaklı geliştirmenin sağladığı avantajlar, yazılım kalitesini artırırken, bakım ve geliştirme süreçlerini kolaylaştırır. PHPUnit, testlerin yazımını ve sürdürülmesini kolaylaştıran çeşitli araçlar ve yöntemler sağlar. Bu, yazılım projelerinde güvenilirliğin ve kalitenin artırılması açısından önemli bir rol oynar.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR