在Haskell中使用monadicIO时,如何使用QuickCheck运行单个测试?

64jmpszr  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在使用QuickCheck作为Haskell中的测试套件。我想运行一个在IO Monad中始终相同的测试。
问题是QuickCheck会自动生成100个测试,即使测试不带任何参数。举个例子(不是我的实际测试):

prop_parseTest :: Property
prop_parseTest = monadicIO $ do
  run $ writeFile "temp.txt" "hello world!"
  content <- run $ readFile "temp.txt"
  assert $ content == "hello world!"

如何让QuickCheck只运行此测试一次?
编辑:我的测试通过quickCheckAll函数执行:

return []
runTests = $quickCheckAll

main :: IO ()
main = qcTests runTests

qcTests :: IO Bool -> IO ()
qcTests tests = do
  passed <- tests
  if passed then exitSuccess
            else exitFailure
elcex8rz

elcex8rz1#

第一个月
修改属性,使其只测试一次。
您可以像这样使用它:

prop_parseTest = once $ monadicIO $ do
    ...

相关问题