QuickCheck值相等

Mat*_*hid 7 haskell quickcheck

我有一个QuickCheck属性,如下所示:

prop42 :: Foo -> Bool
prop42 foo = fn1 foo == fn2 foo
Run Code Online (Sandbox Code Playgroud)

如果此属性失败,它将打印出来的内容foo.但我真的很想知道什么fn1并且fn2回来了.如果foo很大,手动生成这些信息有点不重要.(即,坐在那里,手动输入打印到Windows控制台窗口的巨大文本块.)

测试框架有一个比较相等的东西,并且如果相等不成立则打印出两个值是很常见的.但我似乎无法为QuickCheck找到这样的功能......

Yuu*_*uri 10

看看这里的组合器.例如,printTestCase允许将任意字符串添加到失败案例的输出中.一个简单的例子:

prop x = let f = sin x
    in printTestCase ("Should be at least " ++ show f) $ x >= sin x
Run Code Online (Sandbox Code Playgroud)
$> quickCheck prop
*** Failed! Falsifiable (after 2 tests and 1 shrink): 
-1.0
Should be at least -0.8414709848078965

  • 这有效,但已弃用。相反,使用`===`就足够了;它[在比较失败时打印双方](http://hackage.haskell.org/package/QuickCheck-2.7.3/docs/Test-QuickCheck-Property.html#v:-61--61--61-) 。 (2认同)