You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cabal test结果与QuickCheck日志不一致问题求助

问题:Cabal测试返回PASS,但QuickCheck实际已找到反例

我写了一段QuickCheck测试代码,预期会在5次尝试后失败:

prop_varName :: VarName -> Bool
prop_varName v = let s = content (getVarNameToken v) in
    length s <= 2 || isPrefixOf "a" s

main :: IO ()
main = quickCheck prop_varName

但执行cabal test时,却返回错误的PASS结果:

$ cabal test # 为简洁省略部分内容...
Build profile: -w ghc-9.8.1 -O1
Running 1 test suites...
Test suite dhscanner-ast-test: RUNNING...
Test suite dhscanner-ast-test: PASS
Test suite logged to:
dhscanner-ast-0.1.0.0-dhscanner-ast-test.log
1 of 1 test suites (1 of 1 test cases) passed.

查看测试日志时,却发现已经找到了反例:

$ sed -n "1,3p" dhscanner-ast-0.1.0.0-dhscanner-ast-test.log
Test suite dhscanner-ast-test: RUNNING...
*** Failed! Falsified (after 5 tests):
VarName (Named {content = "U\SOH4@", location = ...})

附上完整的cabal文件(事后确认与问题无关):

cabal-version:      3.0
name:               dhscanner-ast
version:            0.1.0.0
-- synopsis:
-- description:
license:            GPL-3.0-only
license-file:       LICENSE
author:             ********
maintainer:         ***************@*****.com
-- copyright:
build-type:         Simple
extra-doc-files:    CHANGELOG.md
-- extra-source-files:

common warnings
    ghc-options: -Wall

library
    import:           warnings
    exposed-modules:
        Ast,
        Token,
        Location

    -- other-modules:
    -- other-extensions:
    build-depends:
        base ^>=4.19.0.0,
        containers,
        aeson

    hs-source-dirs: src

    default-language: Haskell2010

test-suite dhscanner-ast-test
    import:           warnings
    default-language: Haskell2010
    -- other-modules:
    -- other-extensions:
    type:             exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          Main.hs
    build-depends:
        base ^>=4.19.0.0,
        dhscanner-ast,
        QuickCheck,
        random

注:此问题并非其他类似问题的重复。

内容的提问来源于stack exchange,提问作者OrenIshShalom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:24:53