Günümüz yazılım dünyasında yazılım geliştirmek kadar geliştirilen yazılımların testleri de büyük önem taşıyor. Gerek manuel testler ile gerekse de otomatize edilmiş testler ile yazılımların test edilmesi sağlanıyor. Yazılımların otomatize test koşumlarında kullanılan JUnit kütüphanesi artık yoluna 2006 yılında çıkan 4. versiyonu yerine 2017 yılında çıkan 5. versiyonu ile devam etmekte. Aradan geçen uzun zaman diliminde JUnit 5’te 4’e göre önemli değişiklikler mevcut.
JUnit ve test kavramları ile ilgili daha detaylı bilgiye şuradan erişebilirsiniz.
Bu yazımızda Junit 4 ile testlerin koşulduğu bir projede JUnit 5’e geçiş için nelerin yapılması gerektiğini aşağıdaki şekilde 5 maddede özetleyebiliriz.
1. Expected ve Timeout Özelliklerindeki Değişiklikler:
JUnit4 içerisinde fırlatılması beklenen bir hata tipini expected özelliği @Test
2. Annotation’ına aşağıdaki gibi bildirebiliyorduk:
Junit 5 ile birlikte bu expected özelliği kaldırıldı ve artık biz assertThrows’a geçiş yapabiliriz. Örneğin şöyle:
JUnit 4 ile test metotlarımızda timeout özelliğini şu şekilde kullanabiliyorduk.
Junit 5 ile birlikte timeout özelliği yerine assertTimeout metodunu kullanabilmekteyiz.
3. Değişen Annotation’larındaki Değişiklikler
JUnit 5 ile birlikte aşağıdaki annotation’lar yerlerini yenilerine bıraktılar:
@Before annotation’ı artık @BeforeEach olarak kullanılacak.
@After annotation’ı artık @AfterEach olarak kullanılacak.
@BeforeClass annotation’ı artık @BeforeAll olarak kullanılacak.
@AfterClass annotation’ı artık @AfterAll olarak kullanılacak.
@Ignore annotation’ı artık @Disabled olarak kullanılacak.
4. Yeni Gelen Annotation’lar:
JUnit 4’de mevcut test context’ini başka bir framework ile entegre etmek için @RunWith annotation’ı kullanabiliyorduk. JUnit 5 ile birlikte benzer işi yapan @ExtendWith annotation’ı geldi. Örneğin JUnit 4 ve Spring Test’i bir arada kullanırken şöyle yapıyorduk:
JUnit 5 ile artık şöyle yapabiliriz:
5. Yeni Test Rule Annotation’ları:
Junit 4 içerisinde @Rule annotation’ı ile bir rule belirleyip onu koşturabiliyorduk. Örneğin Junit 4 içerisinde bir Test Rule yazımı ve kullanımı şu şekilde yapılabiliyordu:
Yukarıda oluşturduğumuz rule’u test sınıfı içerisinde şu şekilde tanımlayıp kullanabiliyoruz.
JUnit 5 içerisinde ise rule yazımı ve kullanımı biraz daha kolaylaştı. Aslında ismi de Rule’dan ziyade Extension olarak geçmeye başladı. Extension tanımımızı şöyle yapabiliyoruz.
Ardından bu extension tanımını test metotlarını koşturacağımız sınıfımızı @ExtendWith notasyonu ile işaretleyerek direkt kullanabiliyoruz.
KAYNAKÇA:
- https://www.baeldung.com/junit-5-migration (Son erişim tarihi: 23.05.2023)
- https://www.arhohuttunen.com/junit-5-migration/ (Son erişim tarihi: 23.05.2023)
- https://medium.com/@wenqiglantz/junit-migration-guide-from-junit-4-to-junit-5-95b5700431a6 (Son erişim tarihi: 23.05.2023)
- https://docs.openrewrite.org/running-recipes/popular-recipe-guides/migrate-from-junit-4-to-junit-5 (Son erişim tarihi: 23.05.2023)