我正在尝试使用 QuickCheck 以下另一个答案。
我这样测试:
{-# LANGUAGE TemplateHaskell #-}
import Test.QuickCheck
import Test.QuickCheck.All
last' :: [a] -> a
last' [x] = x
last' (_:xs) = last' xs
prop_test x = last' x == last x
check = do
putStrLn "quickCheck"
quickCheck (prop_test :: [Char]-> Bool)
check2 = do
putStrLn "quickCheckAll"
$quickCheckAll
然后我将其加载到 winGHCI 中并调用check
and check2
. I get
quickCheck
*** Failed! (after 1 test):
Exception:
list.hs:(7,1)-(8,23): Non-exhaustive patterns in function last'
""
我认为这是合理的。但是,我从check2
quickCheckAll
True
我很困惑,因为无论我如何改变last'
功能,甚至错误,quickCheckAll
始终返回 True。
我的代码有什么问题吗?我怎样才能解决这个问题?
来自Test.QuickCheck.All docs:
To use quickCheckAll
,按照以下方式向您的模块添加定义
return []
runTests = $quickCheckAll
然后执行runTests
.
注:奇异之处return []
上例中的 GHC 7.8 需要;没有它,quickCheckAll
将无法找到任何属性。
Adding return []
在你之前check
让它对我有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)