QuickCheck在故障和cabal集成时退出状态

jbe*_*man 10 haskell quickcheck cabal

我试图了解如何将一些quickcheck测试与cabal集成.这个要点表明该quickCheck函数在失败时返回非零状态,但我没有得到这种行为,因此使用cabal的exitcode-stdio-1.0测试套件类型似乎对我不起作用,除非我想调用error我的所有测试.

cabal 用户指南还提到了一个detailed-1.0测试套件,但AFAICT还没有.那还是这样吗?

这似乎从类似的回答这一个,很多人都在使用测试框架封装.这对我来说太过分了,但这是我应该用的吗?

我对这种情况感到不满意.

我正在使用的东西的版本:

cabal-install version 0.10.2
using version 1.10.1.0 of the Cabal library
QuickCheck-2.4.1.1
Run Code Online (Sandbox Code Playgroud)

ehi*_*ird 14

看看它quickCheck的实现,它确实永远不会退出该计划.但是,您可以使用quickCheckResult以下方法轻松实现此行为:

import Control.Monad
import Test.QuickCheck
import Test.QuickCheck.Test
import System.Exit

main :: IO ()
main = do
  result <- quickCheckResult prop
  unless (isSuccess result) exitFailure
Run Code Online (Sandbox Code Playgroud)

我的理解是,detailed-1.0它还没有被考虑用于一般用途,exitcode-stdio-1.0现在仍然是推荐的测试解决方案.

  • 我知道这是一个3 + yrs,但我花了太多时间试图弄清楚你还需要``导入Test.QuickCheck.Test`为`isSuccess`为"在范围内".万一有人也有这个问题.另外,有没有办法让它变得更好?(即不必同时执行`import Test.QuickCheck`以及`Test.QuickCheck.Test`?) (4认同)
  • @conrad它显然在某些时候得到了改善:[isSuccess](https://hackage.haskell.org/package/QuickCheck-2.13.2/docs/Test-QuickCheck.html#v:isSuccess)现在处于“测试”状态.快速检查`。 (2认同)

Pau*_*son 6

我在最新版本的Decimal包中使用了test-framework .这不是矫枉过正; 它只是想要的东西.如果您想要一个如何使用它的示例,请查看完整的源代码.