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