Haskell:
Viết các bài kiểm tra
Cách thực hiện:
Haskell sử dụng HUnit cho các unit test cơ bản, và QuickCheck cho các property-based test. Dưới đây là một ví dụ nhanh về HUnit:
import Test.HUnit
testList :: Test
testList = TestList [TestCase (assertEqual "Should add numbers" 4 (2 + 2)),
TestCase (assertEqual "Should subtract numbers" 0 (2 - 2))]
main :: IO Counts
main = runTestTT testList
Chạy nó, và nó hiển thị:
Cases: 2 Tried: 2 Errors: 0 Failures: 0
Ví dụ về QuickCheck:
import Test.QuickCheck
prop_RevRev :: [Int] -> Bool
prop_RevRev xs = reverse (reverse xs) == xs
main :: IO ()
main = quickCheck prop_RevRev
Kết quả mẫu có thể đọc là:
+++ OK, đã vượt qua 100 bài test.
Tìm hiểu sâu hơn
Testing bắt đầu từ sớm khi lập trình ra đời, nhưng trở nên nghiêm túc với sự phát triển của TDD vào những năm 2000. Các hàm thuần túy của Haskell làm cho nó trở nên tuyệt vời cho việc testing. Các lựa chọn thay thế cho HUnit/QuickCheck bao gồm doctest và Hedgehog. HUnit giống như JUnit trong Java. QuickCheck tự động tạo các trường hợp test, kiểm tra các tính chất mà bạn định nghĩa.
Xem thêm
- Tài liệu HUnit: http://hackage.haskell.org/package/HUnit
- QuickCheck trên Hackage: http://hackage.haskell.org/package/QuickCheck
- Giới thiệu về Testing trong Haskell: https://hspec.github.io/
- “Real World Haskell” bởi Bryan O’Sullivan, Don Stewart, và John Goerzen: http://book.realworldhaskell.org/