PHP test çerçevesi PHPUnit'in 12. sürümünün Şubat 2025'in başında yayınlanması planlanıyor. iX, projenin başlatıcısı, baş geliştiricisi ve sürdürücüsü Sebastian Bergmann ile geliştirmenin mevcut durumu, yaklaşan değişiklikler ve bir sonraki sürümün kişisel öne çıkan noktaları hakkında konuşuyor.
Duyuru
Sebastian Bergmann başından beri açık kaynaklı bir kişiydi. Deneyimlerini yayınlarda ve konferanslarda paylaşıyor. Aynı zamanda The PHP Consulting Company'nin (thePHP.cc) kurucu ortağı ve baş danışmanıdır.
iX: PHPUnit 12'nin Şubat 2025'te piyasaya sürülmesi planlanıyor – geliştirmenin mevcut durumu nedir?
Sebastian Bergmann: Her yıl Şubat ayının ilk Cuma günü PHPUnit 12 olarak yeni bir ana sürüm yayınlanır. Yani PHPUnit 12.0'ın sürümünün 7 Şubat 2025'te yayınlanması planlanıyor.
PHPUnit 12.0 gibi bir sürüm öncelikle temizleme amaçlıdır ve önceki sürümlerle uyumlu olmayan değişiklikler yapmak için yıllık bir fırsat sağlar. Örneğin, önceki sürümde “kullanımdan kaldırıldı” olarak işaretlenen özellikler kaldırılmıştır.
Geriye dönük olarak uyumlu olmayan tüm planlanmış değişiklikler GitHub'daki PHPUnit deposunun ana dalında zaten uygulanmıştır. Mevcut geliştirme durumu, PHPUnit 12 piyasaya sürüldüğünde bekleyebileceğiniz duruma karşılık gelir.
Kişisel öne çıkanlar
iX: Yeni sürümün hangi özellikleri kişisel olarak öne çıkıyor?
Sebastian Bergmann: PHPUnit 12.0 gibi yeni bir sürüm genellikle pek fazla yenilik getirmez çünkü bu yılın Şubat ayındaki özellik sürümlerinin temelini oluşturur. PHPUnit 12.0'da, öznitelikler aracılığıyla kod kapsamını daha iyi kontrol edebilmek için bazı küçük yeni özellikler bulunmaktadır.
PHPUnit 12'deki kişisel vurgum yeni bir özellik değil, daha ziyade son birkaç yıldaki temizleme, dönüştürme ve iyileştirme çalışmalarının sonucudur: test taslakları nihayet sahte nesnelerden net bir şekilde ayrılmıştır.
Sebastian Bergmann, PHP çerçevesi PHPUnit'in yazarı ve thePHP.cc'nin kurucu ortağı.
Hızlı bir açıklama: Nesne yönelimli programlamada farklı nesne türleri vardır: örneğin hizmetler, varlıklar ve değer nesneleri. Hizmetler, iş süreçleri veya veri yükleme ve kaydetme gibi daha teknik şeyler olabilen süreçleri kapsar. İdeal olarak hizmetler bir arayüz uygular.
Test sırasında, eğer o uygulamayı test etmek istiyorsak, o arayüzün gerçek bir uygulamasını kullanırız. Arayüze bağlı bir bileşeni test etmek istediğimizde bu arayüzün test saplamasını kullanırız. İşbirliği yapan nesneler arasındaki iletişimi test etmek istediğimizde sahte arayüz nesnesi kullanırız.
Test çiftleri yaklaşık 20 yıl önce o zamanın test çerçevelerine dahil edildiğinde ve daha sonra popüler hale geldiğinde, test koçanı ve sahte nesne terimleri hala birbirinin yerine kullanılabilirdi. Bu nedenle PHPUnit başlangıçta yalnızca tek bir API sundu; yöntem getMock()test çiftleri oluşturmak için. Bu kafa karıştırıcıydı ve bu nedenle son birkaç yıldır Test Çiftleri için API üzerinde çok çalışıyoruz.
Test kodunu okurken ne yaptığını ve bunu neden yaptığını anlamak önemlidir. Örneğin, test amacıyla bir bağımlılığın yerine test çifti konulursa bunun neden olduğunu bilmek önemlidir. Test edilen bileşenin yalnızca tek bir bağımlılığa yalıtılması gerekiyorsa test saplaması kullanmalısınız. Nesneler arasındaki iletişimi belirlemek ve/veya test etmek istiyorsanız bir Sahte Nesneye ihtiyacınız vardır. Simüle edilmiş nesneler oluşturmak için test kodunda her zaman ve her yerde bir API kullanılıyorsa, yalnızca ikinci veya üçüncü bakışta testin neyle ilgili olduğunu anlarsınız. Test taslakları ve sahte nesneler oluşturmaya yönelik API'lerin katı şekilde ayrılması sayesinde bu artık daha net.
iX: Geliştiriciler PHPUnit 12'ye nasıl hazırlanabilirler?
Sebastian Bergmann: PHPUnit 11 ile geriye dönük uyumlu olmayan değişiklikler zaten uygulandığından (yukarıya bakın), cesur olanlar PHPUnit 12 olacak olanla kendi testlerini test edebilirler.
Tabii ki, mevcut kararlı sürümle bu daha kolay ve daha az riskli: Eğer testlerimi PHPUnit 11.5 ile, test çalıştırıcısı kullanımdan kaldırılmış özellikleri kullandığımdan şikayet etmeden çalıştırabilirsem, o zaman testlerimi PHPUnit 12 can run ile çalıştırabileceğimi biliyorum.
Madeleine Domogalla soruları sordu.
(mdo)
Duyuru
Sebastian Bergmann başından beri açık kaynaklı bir kişiydi. Deneyimlerini yayınlarda ve konferanslarda paylaşıyor. Aynı zamanda The PHP Consulting Company'nin (thePHP.cc) kurucu ortağı ve baş danışmanıdır.
iX: PHPUnit 12'nin Şubat 2025'te piyasaya sürülmesi planlanıyor – geliştirmenin mevcut durumu nedir?
Sebastian Bergmann: Her yıl Şubat ayının ilk Cuma günü PHPUnit 12 olarak yeni bir ana sürüm yayınlanır. Yani PHPUnit 12.0'ın sürümünün 7 Şubat 2025'te yayınlanması planlanıyor.
PHPUnit 12.0 gibi bir sürüm öncelikle temizleme amaçlıdır ve önceki sürümlerle uyumlu olmayan değişiklikler yapmak için yıllık bir fırsat sağlar. Örneğin, önceki sürümde “kullanımdan kaldırıldı” olarak işaretlenen özellikler kaldırılmıştır.
Geriye dönük olarak uyumlu olmayan tüm planlanmış değişiklikler GitHub'daki PHPUnit deposunun ana dalında zaten uygulanmıştır. Mevcut geliştirme durumu, PHPUnit 12 piyasaya sürüldüğünde bekleyebileceğiniz duruma karşılık gelir.
Kişisel öne çıkanlar
iX: Yeni sürümün hangi özellikleri kişisel olarak öne çıkıyor?
Sebastian Bergmann: PHPUnit 12.0 gibi yeni bir sürüm genellikle pek fazla yenilik getirmez çünkü bu yılın Şubat ayındaki özellik sürümlerinin temelini oluşturur. PHPUnit 12.0'da, öznitelikler aracılığıyla kod kapsamını daha iyi kontrol edebilmek için bazı küçük yeni özellikler bulunmaktadır.
PHPUnit 12'deki kişisel vurgum yeni bir özellik değil, daha ziyade son birkaç yıldaki temizleme, dönüştürme ve iyileştirme çalışmalarının sonucudur: test taslakları nihayet sahte nesnelerden net bir şekilde ayrılmıştır.
Sebastian Bergmann, PHP çerçevesi PHPUnit'in yazarı ve thePHP.cc'nin kurucu ortağı.
Hızlı bir açıklama: Nesne yönelimli programlamada farklı nesne türleri vardır: örneğin hizmetler, varlıklar ve değer nesneleri. Hizmetler, iş süreçleri veya veri yükleme ve kaydetme gibi daha teknik şeyler olabilen süreçleri kapsar. İdeal olarak hizmetler bir arayüz uygular.
Test sırasında, eğer o uygulamayı test etmek istiyorsak, o arayüzün gerçek bir uygulamasını kullanırız. Arayüze bağlı bir bileşeni test etmek istediğimizde bu arayüzün test saplamasını kullanırız. İşbirliği yapan nesneler arasındaki iletişimi test etmek istediğimizde sahte arayüz nesnesi kullanırız.
Test çiftleri yaklaşık 20 yıl önce o zamanın test çerçevelerine dahil edildiğinde ve daha sonra popüler hale geldiğinde, test koçanı ve sahte nesne terimleri hala birbirinin yerine kullanılabilirdi. Bu nedenle PHPUnit başlangıçta yalnızca tek bir API sundu; yöntem getMock()test çiftleri oluşturmak için. Bu kafa karıştırıcıydı ve bu nedenle son birkaç yıldır Test Çiftleri için API üzerinde çok çalışıyoruz.
Test kodunu okurken ne yaptığını ve bunu neden yaptığını anlamak önemlidir. Örneğin, test amacıyla bir bağımlılığın yerine test çifti konulursa bunun neden olduğunu bilmek önemlidir. Test edilen bileşenin yalnızca tek bir bağımlılığa yalıtılması gerekiyorsa test saplaması kullanmalısınız. Nesneler arasındaki iletişimi belirlemek ve/veya test etmek istiyorsanız bir Sahte Nesneye ihtiyacınız vardır. Simüle edilmiş nesneler oluşturmak için test kodunda her zaman ve her yerde bir API kullanılıyorsa, yalnızca ikinci veya üçüncü bakışta testin neyle ilgili olduğunu anlarsınız. Test taslakları ve sahte nesneler oluşturmaya yönelik API'lerin katı şekilde ayrılması sayesinde bu artık daha net.
iX: Geliştiriciler PHPUnit 12'ye nasıl hazırlanabilirler?
Sebastian Bergmann: PHPUnit 11 ile geriye dönük uyumlu olmayan değişiklikler zaten uygulandığından (yukarıya bakın), cesur olanlar PHPUnit 12 olacak olanla kendi testlerini test edebilirler.
Tabii ki, mevcut kararlı sürümle bu daha kolay ve daha az riskli: Eğer testlerimi PHPUnit 11.5 ile, test çalıştırıcısı kullanımdan kaldırılmış özellikleri kullandığımdan şikayet etmeden çalıştırabilirsem, o zaman testlerimi PHPUnit 12 can run ile çalıştırabileceğimi biliyorum.
Madeleine Domogalla soruları sordu.
(mdo)