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 № 1W 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ą.