JUnit Expected Exception

JUnit Excepted Exception özelliği ile beklenilen hataların oluşup oluşmadığını, beklenilen hatada hangi mesajı vermesi gerektiğini tanımlarız.

Aşağıda ki örnekte 2 adet test metodumu oluşturduk ve bu metotların içinde ki değerlerin hata vermesi gerektiğini tanımladık.

Metot içersinde yazılan kodlarda hangi hata sınıfının çalışması gerektiğini @Test(expected=<ExceptionSinifi.class> notasyonunda tanımlıyoruz.

İlk örneğimizde NullPointerException hatası fırlatması gerektiğini tanımladık. sayi isimli değişkenimize null değer atadıktan sonra 5 sayısını ilave ettik. Null bir değerin üzerine sayı ilave edemeyeceğimiz için beklediğimiz hatayı aldık. Beklenilen hata durumunu aldığımız için end mesajımızı ekrana yazdıramadık. Expected beklediğimiz bir test metodunda işlemlerimiz hata vermeseydi, JUnit bize AssertException mesajıyla test metodunun başarısız olduğunu belirtecekti.

testEmptyList örneğimizde ise içinde herhangi bir öğe olmayan listenin 0’ncı indisinden veri çekmeye çalıştık. Böyle bir durum mümkün olmadığı için beklediğimiz IndexOutOfBoundsException hatasını alıyoruz ve bu testide başarıyla tamamlıyoruz.

Aşağıda ki exeption test örneğimizde ise try catch içersinde çalışan metotlarımızın belirtilen noktada her zaman hataya düşmesini ve hatanın düştüğü yerde beklediğimiz mesajı alıp almadığımızı kontrol ediyoruz.

testNullPointer metodumuzda null değere 5 sayısını ekleme sonrası catch içersine girecektir. catch içersinde hata tipi instanceof ile kontrol ederek testimizi başarıyla tamamlıyoruz. Eğer hata beklediğimiz halde testimizin, ilgili noktada hataya düşüp düşmediğini anlamak istersek fail() metodunu kullanmamız gerekmektedir. Metodumuzda normal şartlarda fail() metoduna ulaşmadan hataya düşmesi gerekmektedir. Fakat hataya düşmemesinin bir hata olduğunu belirtmemiz için fail() metodunu tanımlıyoruz. Böylece catch içine düşmek yerine fail()  bulunan satıra gelindiğinde test AssertionError hata mesajını verir. Bunun anlamı hata yakalama testinin başarısız olduğudur.

testEmptyList test metodumuzda ise boş bir listenin 0’ncı satırında hataya düşmesi gerektiğini ve bu hatanın mesajının “Index: 0, Size: 0” olması gerektiğidir. Burada hata mesajını belirtmemizin nedeni bir Exception sınıfında birden fazla hata mesajının olmasıdır. Böylece beklediğimiz hatanın olup olmadığınıda anlamış oluruz.

Test metotlarımıza davranışlar ekleyebileceğimiz @Rule notasyonunuda kullanabiliriz. İlerleyen konularımızda bahsedeceğimiz bu yapı metotlarımızın daha esnek bir yapıya sahip olmasını sağlamaktadır.

Yukarıda ki örneğimizde thrown isimli, ExpectedException tipinde bir değişken tanımlanıyor. none metodu aracılığı ile new işlemi metot içersinden gönderiliyor. @Rule aracılığı ile bu davranışı her metotda kullanmamızı sağlıyoruz. Metodumuzun içersinde expect aracılığıyla bu metodun hangi tip Exception vereceği, expectMessage ile de mesaj içeriği paylaşılıyor. Bu metot doğru bir şekilde çalışarak görevini tamamlıyor.


Yazılıma olan tutkusu için Trakya Üniversitesi - Bilgisayar Teknolojisi ve Bilişim Sistemleri öğrencisi, bölüm temsilcisi ve Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu okul temsilcisi olarak öğrenimini 2016'da tamamladı. Junior Java Developer olarak aktif iş hayatına devam etmektedir.

Yazıyı Paylaş

Related Articles

Yorum Yaz

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