如何在不抑制摘要输出的情况下抑制QuickCheck中每个测试的报告?

时间:2015-11-11 21:08:55

标签: haskell quickcheck

在QuickCheck中,有没有办法抑制

(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)  ...

输出而不会抑制摘要

+++ OK, passed 500 tests.

输出

我已尝试设置chatty = False,但这会抑制两者。

1 个答案:

答案 0 :(得分:4)

由于您只对摘要输出感兴趣,因此可以将quickCheckWithResultchatty = False一起使用:

silentQuickCheck :: Testable prop => prop -> IO () 
silentQuickCheck p = quickCheckWithResult stdArgs { chatty = False } p >>= putStr . output

示例:

main = do
   putStrLn "Even: "
   silentQuickCheck even
   putStrLn "Odd: "
   silentQuickCheck odd
   putStrLn "ID Eq: "
   silentQuickCheck $ \n -> n == n

输出:

Even:
*** Failed! Falsifiable (after 6 tests):
3
Odd: 
*** Failed! Falsifiable (after 1 test):
0
ID Eq:
+++ OK, passed 100 tests.

但是,在\b(ASCII退格)上向后移动光标的终端/输出上,测试计数((xx tests))会反复重写,因此只有在输出时才需要这样做/终端在这个意义上不承认\b