ArchUnit Nedir ve Nasıl Kullanılır?
Bu yazıda ArchUnit’in ne olduğunu, nasıl çalıştığını ve Java projelerinde nasıl kullanılabileceğini ele alacağım.
ArchUnit Nedir?
ArchUnit, Java bytecode’unu analiz eden bir test kütüphanesidir. Geliştiricilerin tanımladığı mimari kuralları otomatik olarak kontrol eder.
ArchUnit ile aşağıdaki kuralları test edebiliriz:
- Paketler arasındaki bağımlılıklar
- Sınıf isimlendirme standartları
- Katmanlar arasındaki erişim kuralları
- Döngüsel bağımlılıklar
- Belirli sınıfların veya anotasyonların kullanım kuralları
Örneğin Controller sınıflarının Repository katmanına doğrudan erişmesini engelleyebilirsiniz. ArchUnit, bu kuralı ihlal eden bir sınıf bulduğunda testi başarısız olarak işaretler.
Böylece mimari kurallar yalnızca dokümanlarda kalmaz. Test altyapısının bir parçası hâline gelir.
Neden ArchUnit Kullanmalıyız?
Erken Uyarı Sistemi Sunar
ArchUnit, mimari ihlalleri geliştirme aşamasında tespit eder. Geliştirici, kod incelemesi başlamadan önce hatayı görebilir.
Bu yaklaşım, mimari sorunların ana koda taşınmasını önler. Aynı zamanda kod inceleme sürecini de hızlandırır.
Yaşayan Dokümantasyon Oluşturur
Ekipler çoğu zaman mimari kuralları dokümanlarda tanımlar. Ancak bu dokümanlar zamanla güncelliğini kaybedebilir.
ArchUnit, mimari kuralları test kodu olarak saklar. Testler düzenli olarak çalıştığı için kurallar güncel ve doğrulanabilir durumda kalır.
Bu nedenle ArchUnit testleri, projenin yaşayan mimari dokümantasyonu olarak görev yapar.
Manuel Kontrol İhtiyacını Azaltır
Bazı mimari kuralları her Pull Request sırasında manuel olarak kontrol etmek zordur.
Controller sınıfları Repository sınıflarına doğrudan erişmemelidir.
Kod incelemesi yapan kişinin bu kuralı her değişiklikte kontrol etmesi gerekir. ArchUnit ise bu kontrolü otomatik olarak gerçekleştirir. Bu sayede ekip, tekrarlayan kontroller yerine iş mantığına ve kod kalitesine odaklanabilir.
Kolayca Entegre Edilebilir
ArchUnit, mevcut JUnit altyapısıyla birlikte çalışır. Projeye gerekli bağımlılığı ekledikten sonra mimari testleri yazmaya başlayabilirsiniz.
Ek bir test ortamı veya ayrı bir araç kurmanız gerekmez. ArchUnit testlerini diğer birim testleri gibi çalıştırabilirsiniz.
Bu testleri CI/CD sürecine de ekleyebilirsiniz. Böylece her kod değişikliğinde mimari kuralları otomatik olarak kontrol edebilirsiniz.
ArchUnit Nasıl Çalışır?
ArchUnit, uygulamadaki Java bytecode dosyalarını analiz eder. Ardından sınıfları, paketleri ve bağımlılıkları temsil eden bir model oluşturur.
ArchUnit çalışma zamanı davranışlarını incelemez. Bunun yerine kodun statik yapısına odaklanır.
Başka bir ifadeyle ArchUnit, kodun çalışma sırasında ne yaptığını değil, nasıl yapılandırıldığını kontrol eder.
Örneğin şu sorulara cevap arar:
- Bir sınıf hangi pakette bulunuyor?
- Hangi sınıflara bağımlılık duyuyor?
- Hangi sınıfları çağırıyor?
- Hangi anotasyonları kullanıyor?
- Katmanlar arasında kurallara aykırı bir erişim bulunuyor mu?
- Projede döngüsel bağımlılık oluşmuş mu?
Bu yaklaşım sayesinde ArchUnit, mimari kuralları kodun genel yapısı üzerinde test eder.
ArchUnit Mimari Kuralları Nasıl Kontrol Eder?
ArchUnit testlerinde önce kontrol etmek istediğimiz sınıfları belirleriz. Daha sonra bu sınıfların uyması gereken kuralları tanımlarız.
Örneğin aşağıdaki mimari kuralları oluşturabiliriz:
- Controller sınıfları yalnızca Service katmanına erişmelidir.
- Repository sınıfları Controller katmanına erişmemelidir.
- Service sınıfları belirli bir paket altında bulunmalıdır.
@Serviceanotasyonu kullanan sınıfların isimleriServiceile bitmelidir.- Proje paketleri arasında döngüsel bağımlılık bulunmamalıdır.
ArchUnit, test sırasında ilgili sınıfları analiz eder. Bir sınıf tanımlanan kurala uymuyorsa test başarısız olur.
Test çıktısı, kuralı ihlal eden sınıfı ve bağımlılığı gösterir. Böylece geliştirici, mimari problemi hızlıca tespit edebilir.
Sonuç
ArchUnit, Java projelerinde mimari kuralları otomatik testlere dönüştürür. Bu sayede ekipler, mimari standartları manuel olarak kontrol etmek zorunda kalmaz.
ArchUnit kullanarak katman bağımlılıklarını, isimlendirme standartlarını ve paket kurallarını doğrulayabilirsiniz. Ayrıca döngüsel bağımlılıkları geliştirme aşamasında tespit edebiliriz.
Mimari testleri CI/CD sürecine eklemek, kuralların her değişiklikte kontrol edilmesini sağlar. Böylece proje büyüdükçe mimari yapının bozulma riskini azaltabiliriz.
Leave a Reply