Haskell:
Письмо тестів
Як:
Haskell підтримує кілька тестових фреймворків, але два популярні - це Hspec
і QuickCheck
. Hspec дозволяє вам визначати зрозумілі для людини специфікації для вашого коду, тоді як QuickCheck дозволяє автоматично генерувати тести, описуючи властивості, які ваш код повинен задовольняти.
Використання Hspec
Спочатку додайте hspec
до конфігурації вашого інструмента збірки (наприклад, у файл stack.yaml
або cabal
). Потім імпортуйте Test.Hspec
та напишіть тести як специфікації:
-- файл: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "додає два числа" $
add 1 2 `shouldBe` 3
it "повертає перше число при додаванні нуля" $
add 5 0 `shouldBe` 5
Потім запустіть ваші тести за допомогою вашого інструменту збірки, результат може виглядати так:
MyLib.add
- додає два числа
- повертає перше число при додаванні нуля
Завершено за 0.0001 секунди
2 приклади, 0 невдач
Використання QuickCheck
З QuickCheck ви виражаєте властивості, які ваші функції мають задовольняти. Додайте QuickCheck
до конфігурації вашого проекту, потім імпортуйте його:
-- файл: test/MyLibProperties.hs
import Test.QuickCheck
import MyLib (add)
prop_addAssociative :: Int -> Int -> Int -> Bool
prop_addAssociative x y z = x + (y + z) == (x + y) + z
prop_addCommutative :: Int -> Int -> Bool
prop_addCommutative x y = x + y == y + x
main :: IO ()
main = do
quickCheck prop_addAssociative
quickCheck prop_addCommutative
Запуск цих тестів автоматично генерує вхідні дані для перевірки зазначених властивостей:
+++ OK, пройшло 100 тестів.
+++ OK, пройшло 100 тестів.
У прикладах як з Hspec, так і з QuickCheck, набори тестів служать як виконувана документація, яка може автоматично перевірити правильність вашого коду.