2

我最近一直在使用 HUnit 测试框架在 haskell 中运行单元测试。

我遇到了这个函数 PutText 和 runTestText ,它将 PutText st 作为它的第一个参数。

但是我不确定如何使用它,并且希望在理解如何使用它方面得到一些帮助?

4

1 回答 1

3

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 函数返回的值。

于 2016-08-11T20:39:10.413 回答