首页 > 解决方案 > QuickCheck 中的“大小”参数究竟是什么?

问题描述

在 quickcheck的很多函数中都会用到size参数。但我很难理解它到底是什么。getSize返回什么?

标签: haskellquickcheck

解决方案


手册

测试数据生成器有一个隐含的大小参数;quickCheck从生成小测试用例开始,随着测试的进行逐渐增加大小。不同的测试数据生成器以不同的方式解释大小参数:有些忽略它,而列表生成器例如将其解释为生成列表长度的上限。您可以随意使用它来控制自己的测试数据生成器。

您可以使用获取 size 参数的值

sized :: (Int -> Gen a) -> Gen a

sized g调用g,将当前大小作为参数传递给它。例如,要生成 0 到 size 范围内的自然数,请使用

sized $ \n -> choose (0, n)

大小控制的目的是确保测试用例足够大以揭示错误,同时保持足够小以快速测试。

getSize只是获取该尺寸参数的另一种方法。注意getSize等价于sized puresized等价于(getSize >>=)


推荐阅读