Java Assertions

Assertion, kodumuzda bir şeyin doğru olmasını beklediğimiz bir noktaya yerleştirdiğimiz mantıksal bir ifadedir. Bir assertion kod üzerindeki kusurların tespit edilmesine izin verir. Aşağıda kullanım şekli gösterilmiştir. test_değeri boolean bir değerdir. Assertion uygulamada default olarak etkin değildir. Assertion etkinleştirildiğinde ve boolean değer false ise; runtime zamanında bir AssertionError fırlatılır. Programın böyle bir hata yakalaması, programın sonlandırılmasına neden olur. Assertionlar isteğe bağlı olarak parantezler ve bir mesaj bulundurabilir.

assert test_değeri(boolean)

assert test_değeri(boolean) : mesaj (opsiyonel)

Bir assertion ifadesi 3 sonucu vardır: İlk olarak bir assertion devre dışı bırakılırsa, Java assertionu atlar ve koda devam eder. İkincisi; Assertion etkinleştirilirse ve boolean ifade true ise, assertion doğrulanmış olur ve uygulama çalışmaya devam eder. Üçüncü olarak; Asertion etkinleştirilmiş ve boolean ifade false ise, assertion geçersiz olur ve bir AssertionError hatası fırlatılır.

Assertion etkinleştirme/etkisiz hale getirme

Varsayılan olarak assert anahtar kelimesi runtime zamanda JVM tarafından yok sayılır. Assertionları etkinleştirmek için komut satırında -enableassertions yani -ea bayrağı seçilmelidir. Örneğin; java -ea test.java.

Bazen de uygulama için assertionları etkinleştirilir, ancakbazı pakaet veya sınıflar için devre dışı bırakmak isteyebiliriz. Java bunun için -disableassertion yani -da bayrağının seçilmesi gerekir.

Günümüzde ide üzerinden uygulama geliştirdiğimiz için bir assertion Eclipse üzerinden etkinleştirilmesi aşağıdaki gibidir :

Run -> Run Configurations tıklanır. Açılan pencerede Arguments tabı tıklanır. Burada VM arguments kısmına -ea yazmamız yeterlidir.

Aşağıdaki gibi basit bir assertion kullanımına bakalım:

public class AssertionSample {
 public static void main(String[] args) {
	int sayi = -10;
	assert sayi > 0;
	System.out.println(sayi);
}
}

Burada assertion ifademiz false döneceği için aşağıdaki gibi bize bir AssertionError hatası fırlatacaktır:

Exception in thread “main” java.lang.AssertionError
at assertion.AssertionSample.main(AssertionSample.java:4)

Please follow and like us: