Haskell:
כתיבת בדיקות
איך לעשות זאת:
הסקל תומך במסגרות טסט שונות, אך שתיים פופולריות הן Hspec
ו-QuickCheck
. Hspec מאפשר לך להגדיר מפרטים קריאים לאדם עבור הקוד שלך, בעוד QuickCheck מאפשר לך לייצר טסטים אוטומטית על ידי תיאור תכונות שהקוד שלך צריך לעמוד בהן.
שימוש ב-Hspec
ראשית, הוסף hspec
אל קובץ תצורת כלי הבנייה שלך (למשל, stack.yaml
או קובץ cabal
). לאחר מכן, יבא את Test.Hspec
וכתוב טסטים כמפרטים:
-- file: 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
לתצורת הפרויקט שלך, ואז יבא אותו:
-- file: 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, סדרות הטסטים משמשות כתיעוד פעיל שיכול לאמת באופן אוטומטי את נכונות הקוד שלך.