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)