Haskell:
Написание тестов

Как это сделать:

Haskell использует HUnit для базовых модульных тестов и QuickCheck для тестов, основанных на свойствах. Вот быстрый пример с использованием HUnit:

import Test.HUnit

testList :: Test
testList = TestList [TestCase (assertEqual "Должно сложить числа" 4 (2 + 2)),
                     TestCase (assertEqual "Должно вычесть числа" 0 (2 - 2))]

main :: IO Counts
main = runTestTT testList

При запуске он покажет:

Cases: 2  Tried: 2  Errors: 0  Failures: 0

Пример с использованием QuickCheck:

import Test.QuickCheck

prop_RevRev :: [Int] -> Bool
prop_RevRev xs = reverse (reverse xs) == xs

main :: IO ()
main = quickCheck prop_RevRev

Примерный результат выполнения:

+++ OK, пройдено 100 тестов.

Подробнее

Тестирование началось с раннего программирования, но получило серьезное развитие с ростом популярности TDD в 2000-х. Чистые функции в Haskell делают его отличным выбором для тестирования. Альтернативы HUnit/QuickCheck включают doctest и Hedgehog. HUnit похож на JUnit из Java. QuickCheck автоматизирует генерацию тестовых случаев, проверяя свойства, которые вы определяете.

См. также