opublikował: Teo-TN, 2014-01-02

 

Wprowadzenie

W najbardziej ścisłym ujęciu należałoby powiedzieć, że asercja jest predykatem, czyli stwierdzeniem, które może być prawdziwe, lub fałszywe. W języku JAVA istnieje słowo kluczowe assert, które pozwala nam stwierdzić, że pewne wyrażenie jest prawdziwe, lub wygenerować błąd w przeciwnym wypadku.

Głównym zastosowaniem asercji jest wykonywanie rozmaitych testów. Przy ich użyciu można łatwo sprawdzić, czy podany zestaw danych jest prawidłowy, np. czy nie próbujemy obliczyć silni z liczby ujemnej, lub też ujemnego wyrazu ciągu Fibonacciego, jak również upewnić się, że wskaźnik na obiekt nie jest pusty (null).

Domyślnie sprawdzanie asercji jest wyłączone w języku JAVA i nie zaleca się używania ich poza etapem produkcji kodu. Włączenie następuje poprzez ustawienie odpowiedniej flagi kompilatora:

javac –ea MyClass.java

Kodowanie

Utworzenie asercji w języku JAVA jest niebywale proste. Poniższy przykład pokazuje jak działa asercja:

public void ZapalSwiatlo(Lampa mojaLampa) {

                assert (mojaLampa!=null) : „Wiadomość błędu – opcjonalna – wskaźnik na lampę jest pusty”;

                assert (mojaLampa.jestZapalona() == false) : „Lampa już jest zapalona”;

                mojaLampa.zapal();

}

Uruchomienie powyższej metody z parametrem null lub obiektem, którego funkcja jestZapalona() zwróci wartość true spowoduje „wyrzucenie” błędu AssertionError oraz zakończenie działania programu.

Komentarz

Ważne jest, by pamiętać o tym, kiedy asercje stosować, a kiedy nie. Przede wszystkim nie mogą być one tworzone zamiast klasycznych wyjątków, testów jednostkowych (do tego służy biblioteka JUnit) lub temu podobnych. Istotą asercji jest przewidzenie sytuacji niemożliwych: takich, które nie powinny wystąpić w trakcie typowego działania programu. Zazwyczaj zakładamy, że asercje w danej kompilacji są prawdziwe i użytkownik nigdy nie zobaczy „AssertionError”. Zarazem jest to doskonałe narzędzie do debugowania kodu i wyeliminowania sytuacji, które wystąpić nie powinny – jak na przykład wykonywanie metod na referencji mającej wartość null.

Zaloguj się aby dodać komentarz