Виждам, че има начин да тествате дали дадена функция хвърля изключение от клас С. Но има ли начин да се тества дали дадена функция прави изключение? Или да твърди, че не трябва да прави изключение?
Отговори:
6 за отговор № 1За тестове, които не се очакват изключения, напишете теста си като нормално. Всички изключения, които се хвърлят, няма да успеят да изпробват теста.
За тестове, които биха могли да изхвърлят изключение, тогава използвайте Exception
или Throwable
(Superclass на изключението).
Например:
(deftest mytest
(is (thrown? Exception (/ 1 0))))
(/ 1 0)
ще хвърли a java.lang.ArithmeticException
но също така ще бъде съчетано с родителския клас java.lang.Exception
.
Можете също така да напишете a not-thrown?
макро да правите обратното на thrown?
макро в clojure.test.
Като странична бележка, обикновено искате да хванете по-конкретни грешки, когато тествате единица, тъй като вашият код може да хвърли нова неочаквана грешка, но тестовете ви ще преминат щастливо.