gpt4 book ai didi

unit-testing - 如何保证 FsCheck 的重现性

转载 作者:行者123 更新时间:2023-12-04 23:51:00 27 4
gpt4 key购买 nike

我们希望在持续集成中使用 FsCheck 作为单元测试的一部分。因此,确定性和可重复的行为对我们来说非常重要。

FsCheck 是一个随机测试框架,可以生成有时可能会中断的测试用例。关键是,我们不仅使用必须持有的属性 输入,比如 List.rev >> List.rev === id .相反,我们做一些数字,一些测试用例可能会因为条件不好而导致测试中断。

问题是:我们如何保证,一旦测试成功,它就永远成功?

到目前为止,我看到以下选项:

  • 对种子进行硬编码,例如0. 这将是最简单的解决方案。
  • 制作非常具体的自定义生成器,避免坏例子。当然可能,但结果可能会非常困难,尤其是在要生成许多对象的情况下。
  • 接受它,在某些情况下,由于病理情况,构建可能是红色的,只需重新运行即可。

  • 在这种设置中使用 FsCheck 的惯用方法是什么?

    最佳答案

    some test cases can cause the test to break because of being badly conditioned.



    听起来你需要一个条件属性:
    let isOk x =
    match x with
    | 42 -> false
    | _ -> true

    let MyProperty (x:int) = isOk x ==> // check x here...

    (假设您不喜欢数字 42。)

    关于unit-testing - 如何保证 FsCheck 的重现性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22145269/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com