PHPUnit'de Test İnitilizasyonu ve Temizleme İşlemleri, kod testlerinde uygun başlangıç ve bitişi sağlamak için kullanılan önemli bir konudur Bu makalede bu işlemleri öğrenecek ve test yazarken bunları nasıl kullanabileceğinizi öğreneceksiniz
PHPUnit, PHP için yazılmış bir test çerçevesidir. Bu çerçeve kullanılarak test hazırlama aşamaları gerçekleştirilirken, test başlatmak ve bitirmek için özel bir yöntem gereklidir. İşte burada devreye test initilizasyonu ve temizleme işlemleri giriyor. Bu iki işlem, test sınıflarının başında ve sonunda gerçekleştirilen işlemlerdir.
Test initilizasyonu işlemi, bir test ünitesi başlatılmadan önce gerçekleştirilen hazırlık işlemidir. Bu işlem, test ünitesi için gerekli olan tüm nesnelerin ve değişkenlerin oluşturulması, veritabanı bağlantılarının kurulması ve diğer önemli hazırlık işlemlerini içerir. Bu sayede, test sırasında herhangi bir hata veya yanlış sonuç alma olasılığı minimize edilir.
Test Sınıflarının Kullanımı
PHPUnit testleri hazırlarken, test sınıflarını kullanarak initilize ve clean up işlemlerini gerçekleştirebilirsiniz. Test sınıfları, testlerinizi yönetmek için kullanabileceğiniz bir kavramdır. Bu sınıflar sayesinde, birden fazla testi kolayca organize ederek, testlerinizi daha okunaklı ve anlaşılır hale getirebilirsiniz.
Test sınıflarını kullanarak, her test için ayrı ayrı initilize ve clean up işlemleri gerçekleştirebilirsiniz. Bu sayede, her testin kendi yapısı özelinde ihtiyaç duyulan hazırlıklar ve son temizlik işlemleri yapılabilir. Örneğin, bir test sınıfı içindeki herbir test için farklı bir veritabanı bağlantısı açılarak, testlerin kendi bağlantılarını kullanması sağlanabilir.
Bunun yanı sıra, test sınıfları sayesinde birden fazla test için aynı hazırlık işlemleri de yapabilirsiniz. Örneğin, bir test sınıfı içindeki tüm testler, aynı database bağlantısını kullanarak test yapacaksa, bu bağlantı tek bir kez açılabilir, tüm testlerinden sonra kapatılabilir.
PHPUnit Fonksiyonlarının Kullanımı
PHPUnit kütüphanesi, test hazırlama işlemleri sırasında kullanabileceğimiz birçok özel fonksiyon içermektedir. Bu fonksiyonlar yardımıyla test sınıflarının initilize ve clean up işlemleri daha kolay bir şekilde yapılabilir.
- assert() - Test sonuçlarının doğruluğunu kontrol etmek için kullanılır.
- assertSame() - İki değerin eşit olup olmadığını kontrol etmek için kullanılır.
- assertTrue() - Bir koşulun doğru olup olmadığını kontrol etmek için kullanılır.
- assertFalse() - Bir koşulun yanlış olup olmadığını kontrol etmek için kullanılır.
- assertCount() - Bir dizide bulunan eleman sayısını kontrol etmek için kullanılır.
- expectException() - Beklenen bir istisna oluştuğunda testin başarılı olmasını sağlamak için kullanılır.
Bu fonksiyonlar, test sınıflarının initilize ve clean up işlemlerinde kullanılabilecek özelliklere sahiptir. Bununla birlikte, bunlar sadece birkaç örnek olarak verilmiştir ve PHPUnit kütüphanesi, hazırlanacak olan testlere özel olarak ihtiyaç duyulabilecek daha birçok fonksiyon içermektedir.
Örneğin, setUp() fonksiyonunda test sınıfının özellikleriyle ilgili hazırlıklar yapılırken, tearDown() fonksiyonu test sınıfından ayrıldıktan sonra temizlik işlemleri yapmaya olanak sağlayan bir yapıdadır. Bu fonksiyonlar, PHPUnit kütüphanesinde yer alan geniş fonksiyon yelpazesi sayesinde daha da geliştirilebilir ve test sınıflarının ihtiyaçlarına uygun hale getirilebilir.
Kurulum ve Yükleme
PHPUnit, PHP programlama diliyle yazılmış bir test çerçevesidir. Kurulum yapmadan önce PHP'nin yüklü olması gereklidir. PHPUnit, iki farklı şekilde kurulabilir: Composer ile veya manuel olarak.
PHPUnit, Composer paket yöneticisi ile kolaylıkla kurulabilir. Bunun için, terminal/komut prompt üzerinde şu komut çalıştırılabilir:
composer require --dev phpunit/phpunit
Bu komut, PHPUnit'a ait son sürümünü projeye yükleyecektir.
PHPUnit'u manuel olarak indirip kurmak da mümkündür. PHPUnit'un son sürümü PHPunit.org adresinden indirilebilir. İndirilen dosya arşivi, açıldıktan sonra PHPUnit kullanılarak testler yapılabilir.
PHPUnit kurulumu başarıyla tamamlandıktan sonra, aşağıdaki komut sırasıyla çalıştırılmalıdır:
phpunit --version
Bu komut sayesinde PHPUnit sürüm numarasına ulaşılır ve başarılı kurulumun gerçekleştiği kontrol edilir. Kurulu sürüm numarası ekrana basılacaktır.
PHPUnit kurulumu tamamlandıktan sonra, test sınıfları oluşturularak testler yazılabilir. İlk hazırlık olarak, test sınıflarının kullanımı hakkında ayrıntılı bilgi sahibi olunmalıdır.
Composer İle Kurulum
PHPUnit, PHP için geliştirilmiş bir PHP unit test framework'üdür. Kurulumu oldukça basit ve composer aracılığıyla kolayca yapılabilir. Bunun için öncelikle bir composer.json dosyası oluşturmanız gerekiyor. Oluşturduğunuz composer.json dosyasına aşağıdaki satırları ekleyerek projenize PHPUnit kurulumunu gerçekleştirebilirsiniz.
"require": { "phpunit/phpunit": "^8.5"}
Bu satırları ekledikten sonra console veya terminal üzerinden projenizin bulunduğu dizine gelerek aşağıdaki komutu çalıştırın:
composer install
Bu komut sayesinde projenizde PHPUnit kütüphanesi başarıyla yüklenecektir. Artık projenizde PHPUnit kullanmaya hazırsınız.
Unutmayın, PHPUnit kütüphanesini yüklemek için composer'i yüklemeden önce yüklemediğinizden emin olun. Ayrıca, composer ile yüklediğiniz PHPUnit sürümlerinin, projenizin PHP sürümüyle uyumlu olduğundan emin olmanız gerekiyor.
Manuel Kurulum
PHPUnit kütüphanesinin manuel olarak kurulumu da oldukça basittir. İlk olarak, kütüphanenin son sürümünü indirmeniz ve bilgisayarınıza kaydetmeniz gerekir. Daha sonra, dosyayı açarak terminaldeki "cd" komutunu kullanarak PHPUnit kütüphanesinin konumunu belirtmeniz gerekmektedir. Komut satırında "php phpunit.phar" komutunu kullanarak kütüphaneyi çalıştırabilirsiniz.
Aynı zamanda, Composer kullanmaksızın PHPUnit kurulumu yapmak için de bir seçeneğiniz var. Bu yöntemle, kütüphaneyi doğrudan GitHub sayfasından indirebilir ve sonrasında dosyaları istediğiniz yere yükleyebilirsiniz. Kütüphanenin çalışabilmesi için PHP sürümünüzün en az 5.6 olması gerektiğini hatırlatalım.
Manuel kurulum konusunda daha detaylı bilgilere ihtiyaç duyarsanız, PHPUnit'ın resmi dokümantasyonuna başvurabilirsiniz. Bu belgede, kurulum aşaması tam olarak nasıl yapılacağı adım adım anlatılmaktadır. Kurulumun tamamlanması ile artık PHPUnit'ı kullanarak testleri hazırlayabilir ve kodlarınızın doğru çalışıp çalışmadığını kontrol edebilirsiniz.
Test İnitilize İşlemleri
PHPUnit ile test hazırlama sürecinde test işlemlerinde test başlatmak için öncelikle bir takım hazırlıklar yapılması gerekir. Bu işlemlere test initilize işlemleri adı verilir. Test başlamadan önce yapılması gereken hazırlıklar ile ilgili detaylara buradan ulaşabilirsiniz.
PHPUnit kütüphanesi, test işlemlerinde test başlatmak için setUp() ve __construct() fonksiyonlarını kullanır. setUp() fonksiyonu, her bir test işlemi öncesinde gereken bağımlılıkları, konfigürasyonları ve nesneleri oluşturmak için kullanılır. __construct() fonksiyonu ise test sınıflarının oluşturulduğu ilk adımda, özellikle sınıfın yüklenme işlemi tamamlandıktan sonra yapılması gereken diğer hazırlık işlemlerinde kullanılır.
Test initilize işlemleri bittikten ve test işlemleri tamamlandıktan sonra ise, test sonrası yapılması gereken temizlik işlemleri vardır. Bunlara test cleanup işlemleri adı verilir. Bu işlemlerde, test işlemlerinde oluşturulan bağımlılıklar, ayarlar ve nesnelerin kapatılması, kaynakların yok edilmesi gibi işlemler yapılır. Bu işlemler, tearDown() ve __destruct() fonksiyonları ile yapılır.
Test sürecinde test initilize ve test cleanup işlemleri, test işlemleri öncesinde veya sonrasında gerçekleştirilir ve bu işlemler test işlemlerini riske atmadan test sürecinin başarılı bir şekilde yapılmasına olanak sağlar.
setUp() Fonksiyonu
PHPUnit kütüphanesinde bulunan setUp() fonksiyonu, testlerde kullanılacak olan nesnelerin hazırlanması ve oluşturulması için önemlidir. Bu fonksiyon, test sınıfı içinde tanımlanıp ön tanımlanmış PHPUnit fonksiyonları arasında yer almaktadır.
setUp() fonksiyonu, test yapmadan önce kullanılacak nesnelerin hazırlanmasını sağlamak üzerine tasarlanmıştır. Örneğin, bir veri tabanı testi yapılacaksa, setUp() fonksiyonu ile veritabanı bağlantısı açılır ve gerekli veriler hazırlanır. Bu şekilde test çalıştırılırken her seferinde tekrar tekrar aynı hazırlık işlemleri yapılmasına gerek kalmaz.
setUp() fonksiyonu, aynı zamanda test sınıfı içinde bulunan diğer metotların da çalışmasını sağlayan önemli bir adımdır. Çünkü bir metot çalışmadan önce setUp() fonksiyonunun çağrılması gerekmektedir.
setUp() fonksiyonunun kullanımı, test sınıfı içinde aşağıdaki örnek şekilde tanımlanır:
public function setUp(){ // Nesnelerin ve verilerin hazırlanması}
Burada yapılacak olan hazırlık işlemleri, her test öncesi çalıştırılan setUp() fonksiyonu içinde yer alır. Bu şekilde testlerin daha düzenli bir şekilde çalışması sağlanır ve karmaşa önlenir.
setUp() fonksiyonunun kullanımı test sınıflarında olduğu gibi, fonksiyonlar arasında da oldukça önemlidir. Fonksiyonlar arasında kullanılacak nesnelerin hazırlanması, setUp() fonksiyonu tarafından gerçekleştirilir ve her metot çalışması için hazır hale getirilmiş olur.
__construct() Fonksiyonu
PHPUnit ile test hazırlama sürecinde test sınıflarında __construct() fonksiyonu kullanarak initialization işlemleri yapılabilir. Bu işlem, özellikle test sınıfının örneklerinin oluşturulmasının ardından çalışacak kod parçalarının hazırlanmasında kullanışlıdır. __construct() fonksiyonu, sınıf örneği ilk oluşturulduğunda otomatik olarak tetiklenen bir yapıcı fonksiyondur. Bu fonksiyon içinde tanımlanan kod parçaları, sınıfın ilk oluşturulduğunda çalışacak olan kodlardır.
__construct() fonksiyonu kullanımı için özellikle, sınıfın örneklerinin sayısının çok olması ve birçok test metodu aynı değişkenleri kullanıyorsa, bu değişkenlerin hazırlama işlemlerinin tek bir yerde gerçekleştirilmesi ve tekrar kullanılması gibi durumlarda faydalıdır. Bu sayede kod tekrarının önüne geçilir ve test kodu daha organize hale getirilir.
Özellikler | Açıklama |
---|---|
Çalışma Sırası | Sınıf örneklenirken otomatik olarak çalışır. |
Kullanımı | Kod blokları içinde kullanılır ve test sınıflarında tanımlanır. |
__construct() fonksiyonu ile ilgili örnek bir kullanım aşağıda verilmiştir:
class TestClass extends PHPUnit_Framework_TestCase { protected $sample_variable = ''; public function __construct() { $this->sample_variable = 'Örnek değişken'; } public function testSampleFunction() { // Sınıfın örneklenmesinden sonra $sample_variable değişkeni // 'Örnek değişken' değerine sahiptir. } }
Bu örnekte __construct() fonksiyonu içinde $sample_variable değişkeni 'Örnek değişken' değerine atandı. Bu değer daha sonra test sınıfı içinde test edilebilir hale getirildi. __construct() fonksiyonu, sınıf örneklerinin ilk oluşturulduğunda çalışacak olan kodların hazırlanmasında kullanışlı bir yapıdır.
Test Temizleme İşlemleri
Test sonrası yapılan temizlik işlemleri, yürütülen testlerin sonlandırılması ve sonuçlarının değerlendirilmesi adına oldukça önemlidir. PHPUnit kütüphanesi de bu işlemleri gerçekleştirebilmek adına tearDown() fonksiyonunu kullanır.
tearDown() fonksiyonu, test sınıfındaki öğelerin sonlandırılmasından sorumlu olup test sonrası durumun temizlenmesini sağlar. Bu fonksiyonun kullanılması, testlerin test sonrası sonuçların etkilenmemesine yardımcı olur.
Bununla birlikte, test sınıfında __destruct() fonksiyonu da kullanılabilmektedir. Bu fonksiyon sayesinde, nesne işlemleri tamamlandıktan sonra nesne özellikleri veya çalışma zamanı verileri temizlenebilir. Bu, testlerin daha net sonuçlar vermesinde etkili olabilir.
Test temizleme işlemleri genellikle test hazırlık işlemleriyle birlikte yürütülerek, test süreçlerinin sorunsuz bir şekilde tamamlanması hedeflenir. Bu işlemler, test senaryolarının yapısına ve ihtiyaçlarına göre farklılık gösterebilir. Dolayısıyla, test temizleme işlemlerinin testlerin başarılı bir şekilde tamamlanması adına önemi oldukça büyüktür.
tearDown() Fonksiyonu
PHPUnit kütüphanesi, test hazırlama işlemlerinde tearDown() fonksiyonunu kullanarak test sınıflarının sonlandırılması işlemlerini gerçekleştirmektedir. Bu fonksiyon, setUp() fonksiyonunun tam tersi olarak testin sonlandırılması aşamasında çalışmaktadır. tearDown() fonksiyonu da setUp() fonksiyonu gibi test sınıflarında bulunacak şekilde implement edilir.
tearDown() fonksiyonunun işlevselliği, özellikle test içerisinde kullanılan instance, variable, ve diğer yapılarda yer alan değişiklikleri değiştirme ihtiyacından kaynaklanmaktadır. Bu değişiklikleri tearDown() fonksiyonu aracılığı ile önceki durumlara geri döndürmek mümkündür. Bu sayede, testin her aşamasında doğru verilerle çalışmak ve her testin bağımsız çalışmasını sağlamak mümkündür.
tearDown() fonksiyonu, testin tamamlanmasından sonra çağrıldığı için gereksiz kaynak kullanımını bu şekilde ortadan kaldırmaktadır. tearDown() fonksiyonunun kullanımı test işlemlerinin daha sağlıklı ve etkili bir şekilde gerçekleşmesini sağlamaktadır.
__destruct() Fonksiyonu
PHPUnit'da test hazırlama aşamasındaki clean up işlemleri için kullanabileceğimiz fonksiyonlardan biri de __destruct() fonksiyonudur. __destruct() fonksiyonu, test sınıflarında sonlandırma işlemleri sırasında otomatik olarak çağrılır ve bazı işlemler yapılabilir.
Bu fonksiyon, test sınıfı içerisinde tanımlanabilir ve sınıfın sonlandırılması sırasında süreci tamamlamak için kullanılabilir. __destruct() fonksiyonu, sınıfın oluşturulması ve kullanımı sırasında bazı değişkenlerin tutulması veya tanımlanması amacıyla kullanılabilir.
Özellikle, test sınıflarında kullanılan belirli bir dosyayı açmak veya işlem yapmak için oluşturulan değişkenler, test sonlandığında kapatılmalı veya işlem sonlandırılmalıdır. Bu nedenle, __destruct() fonksiyonu, bu tür değişkenlerin kapatılması, ayarlanması veya yok edilmesi işlemlerini gerçekleştirmek için kullanılabilir.