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 ตัวอย่าง, ชุดการทดสอบทำหน้าที่เป็นเอกสารที่สามารถรันได้ซึ่งสามารถตรวจสอบความถูกต้องของโค้ดของคุณได้อย่างอัตโนมัติ