簡體   English   中英

傳播錯誤導致HUnit測試失敗

[英]Propagating errors to cause HUnit tests to fail

我正在為功能eval :: Wff -> Assignment -> Maybe Bool編寫HUnit測試。 Wff是一種自定義數據類型,它是布爾表達式的簡化子集的抽象分析樹:

data Wff = Var Name
         | Not Wff
         | Or Wff Wff
         deriving (Eq)

Assignment是關聯列表的類型別名,該列表為Wff每個變量提供布爾值:

type Assignment = [(Name, Bool)]

我當前的測試如下:

testEval :: Test
testEval = "Test eval"
        ~: TestList $ zipWith (\e (Just a) -> e ~=? a) expected (eval wff <$> assignments)
    where expected = [True, False]
          assignments = [[('p', True)], [('p', False)]]
          Right wff = parse wffStr
          wffStr = "p"

兩項測試均通過。 但是,該測試不是很可靠。 如果我使用wffStr的更復雜的值對其進行wffStr但輸入錯誤,則模式Right wff將失敗,因為parse將返回Left String而不是Rigth Wff 這會導致測試運行中止,而我寧願因為一些不好的測試而失敗,而其余的則是實際結果。 如何修改當前結構,使錯誤傳播導致測試失敗,而不是一起放棄?

我對HUnit一無所知,但是:您能告訴它解析失敗時該怎么做嗎?

testEval = case parse wffStr of
    Left _ -> {- use HUnit's functions to make a failing test case -}
    Right wff -> "Test eval" ~: TestList $ {- ... -}
    where expected = [True, False]
          {- ... -}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM