/ / Clojure testowanie jednostkowe. Jak sprawdzić, czy funkcja zgłasza wyjątek? - testowanie jednostkowe, clojure

Clojure testowanie jednostkowe. Jak sprawdzić, czy funkcja zgłasza wyjątek? - testowanie jednostkowe, clojure

Widzę, że istnieje sposób sprawdzenia, czy funkcja rzuca wyjątek klasy C. Ale czy istnieje sposób, aby sprawdzić, czy funkcja rzuca wyjątek.A może stwierdzić, że NIE powinien wyrzucać wyjątku?

Odpowiedzi:

6 dla odpowiedzi № 1

W przypadku testów, w których nie oczekuje się wyjątków, należy napisać test w normalny sposób. Wyjątki są odrzucane.

W przypadku testów, które mogą rzucić wyjątek, użyj Exception lub Throwable (Nadklasa wyjątków).

Na przykład:

(deftest mytest
(is (thrown? Exception (/ 1 0))))

(/ 1 0) rzuci a java.lang.ArithmeticException ale będzie również dopasowany przez jego klasę rodzicielską java.lang.Exception.

Możesz również napisać not-thrown? makro, aby zrobić przeciwieństwo thrown? makro w clojure.test.

Na marginesie, na ogół chcesz złapać bardziej szczegółowe błędy podczas testowania jednostkowego, ponieważ twój kod może rzucić nowy nieoczekiwany błąd, ale twoje testy z radością przepuszczą.