我最近一直在使用 HUnit 测试框架在 haskell 中运行单元测试。
我遇到了这个函数 PutText 和 runTestText ,它将 PutText st 作为它的第一个参数。
但是我不确定如何使用它,并且希望在理解如何使用它方面得到一些帮助?
PutText 值允许您自定义报告运行测试生成的消息的方式。
创建一个简单的方法是使用putTextToHandle stdout True
将消息输出到标准输出。该True
参数意味着也发出进度消息。
PutText 协议允许您维护状态。这是一个跟踪发出的消息数量的示例。此状态的最终值也runTestText
作为返回元组的第二个组件返回。
reportMsg :: String -> Bool -> Int -> IO Int
reportMsg message isProgress count = do
putStrLn $ "#" ++ show (count+1) ++ ": " ++ message
return (count+1)
myPutText = PutText reportMsg 0 :: PutText Int
然后你可以像这样使用它:
(testCounts, msgCount) <- runTestText myPutText tests
putStrLn $ "Messages emitted: " ++ show msgCount
这testCounts
是运行/通过/失败/等测试的数量。这msgCount
是最后一次调用 PutText 函数返回的值。