我正在使用QuickCheck来测试自动生成的属性(类似于QuickSpec),但是我遇到的一个常见问题是耗尽内存,这是由于天真的递归生成器或非常大的函数输出(例如,一个失败是由Peano数的指数函数引起的,该函数生成了巨大的嵌套结构。
我想知道是否有一种方法可以放弃评估(如果达到)(驻留)内存限制。似乎we can do this for timeouts,但记忆似乎比较棘手。这样,如果我们使用过多的内存,则可以放弃该测试(就像==>
前提条件失败了一样。)
通过查看weigh
包的来源,我可以看到如何测量整个程序的内存使用情况。这是可行的,但针对一个特定的表达式(也许通过获取一个线程使用的内存或其他东西)来度量它会更好(更健壮)。
出于我的目的,对表达式进行完全规范化就足够了,因为我不必担心递归结构(我可以将其应用于测试结果,实际上是布尔值)。