JUnit Rule

JUnit Rule, test metotlarımıza daha esnek özellikler katmamızı sağlar. Her test metodu çalışmadan önce yapılması gereken işlemler varsa(@Before) veya her test metodunun sonunda yapılması gereken işlemler varsa(@After) @Rule notasyonu(annotation) kullanılabilir. Ayrıca @ClassRule ile test sınıflarını için @BeforeClass ve @AfterCLass işlemleri için özelleştirmeler yapılabilir. JUnit bize sunduğu bazı hazır yapılar vardır. Hepsine  https://github.com/junit-team/junit4/wiki/Rules adresinden ulaşabilirsiniz.

JUnit’in hazır sunduğu yapılardan TemporaryFolder ile başlayalım. TemporaryFolder ile test metotlarımızda test amaçlı dosyalar oluşturulabilir ve bu dosyalar testin sonunda silinebilir.

HasTempFolder sınıfında folder isminde bir @Rule notasyonlu değişken oluşturuyoruz. Bu değişkeni testUsingTempFolder isminde metotda kullanıyoruz. newFile metoduyla oluşturacağımız dosyayı, newFolder metoduyla oluşturacağımız klasörü tanımladık. Bu dosyaların oluşup oluşmadığını exist metoduyla test ettikten sonra ekran çıktılarını verip metodumuzu tamamlamış oluyoruz. Bu konuyu daha iyi kavrayabilmek için CustomRule ile kendi esnek yapılarımızı oluşturalım.

CustomRule

Yapacağımız örnekte her test metodunun çalışmasından önce ve sonrasında metot isminin ekrana yazdırılmasını sağlayacağız.

TestRule implement olarak NamePrintRule sınıfı almaktadır. Bu sınıfın apply isminde ki metodunu @Override notasyonu ile eziyoruz. Oluşan metot içersine return new Statement()  yazarak evaluate metodunun oluşmasını sağlıyoruz. base.evaluate() öncesinde yazılanlar @Before notasyonuna, sonrasında yazılanlar @After notasyonunu işaret etmektedir. Bizde bu özelliklerden yararlanarak test metodunun başladığını ve bittiğini bildiriyoruz.

Daha önce yazdığımız ekran metotlarını artık yazmamıza gerek kalmadı. Kullanmak istediğiniz özelliklere göre kendi @Rule yapılarınızı oluşturabilirsiniz. Kodun esnekliği açısından büyük fayda sağlayacaktır.


Java Developer

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2024 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları