测试例程后无法读取的快速检查日志文件

unreadable quickcheck log file after a test routine

我用 quickcheck 为 Haskell 程序做了一个测试例程。我在我的 cabal 文件中声明了它:

Test-Suite routine_de_test
  Type:               exitcode-stdio-1.0
  Hs-Source-Dirs:     test
  Main-is:            Tests.hs

并启动它:

cabal configure --enable-tests
cabal buil
cabal test

测试处理正确,我希望在日志文件中看到有关用于每个测试的随机值的详细信息 dist/test/ 但是当我打开它时,文件如下所示:

我尝试用多种编码(UTF8、ISO-8859-15 等)打开文件,但没有任何改变。

正常吗?或者有什么问题?

从 cabal 执行快速检查测试时是否有可能获得用于每个测试的随机值的完整列表?

看起来有趣的字符只是退格键,而 quickcheck 只是通过用 (1 test) 覆盖 (0 tests) 然后 (2 tests) 和然后用(3 tests),等等

在终端上显示时视觉效果很好。

更新:

要报告用于测试的随机值,我知道的唯一方法是编写测试以明确显示(或保存到文件)所使用的值。

如果您的测试是纯函数,您可以使用 Debug.Trace 中的 trace 函数。例如,如果你有这个 属性:

prop_commutes :: Int -> Int -> Bool
prop_commutes a b = a + b == b + a

您可以通过如下修改来跟踪 prop_commutes 的每次调用:

import Debug.Trace

prop_commutes :: Int -> Int -> Bool
prop_commutes x y = a + b == b + a
  where (a,b) = trace ("(a,b) = " ++ show (x,y)) (x,y)

然后 quickCheck prop_commutes 将发出如下行:

(x,y) = (20,-73)
(x,y) = (71,-36)
(x,y) = (2,-11)
...

除了它的正常输出。