【问题标题】:QuickCheck for Javascript快速检查 Javascript
【发布时间】:2014-05-12 11:39:14
【问题描述】:

是否有适用于 Javascript 且维护良好的 quickcheck 版本?我找到了几个,例如 check.js 和 claire,但它们似乎都不支持缩小失败的测试用例,这一直让我觉得整个问题中最有用的部分。

【问题讨论】:

    标签: javascript node.js quickcheck


    【解决方案1】:

    我是jsverify 的创建者。我会不断努力让它变得更好,欢迎提交错误报告和功能请求。

    自述文件中还列出了其他 javascript 生成测试库。到目前为止,我还没有找到任何其他好的替代 jsverify。

    【讨论】:

    • 嘿,在 jsverify 中它说“写关于你的函数的属性,这些属性应该适用于所有输入”。那么如何使用 if/else 决策来测试函数呢?例如,如果我想测试当字符串包含“foo”时,该函数会做什么?
    • @JK。 John Hughes 对在youtube.com/watch?v=G0NUOst-53U 指定属性有建议。 ScottW 在fsharpforfunandprofit.com/posts/property-based-testing-2 有建议。我可以推荐它们,如果你能理解 Haskell 和 F# 语法(口头解释真的很有帮助)。
    【解决方案2】:

    我最近发布了https://github.com/dubzzz/fast-check

    我构建它是为了解决我在 JavaScript 中现有的快速检查实现中遇到的几个限制。

    它本身带有一个收缩功能,甚至可以收缩任意组合(我尝试过的框架在 oneof 之类的任意组合上都失败了)。 它还可以生成大型对象和数组。 默认情况下,它倾向于首先尝试较小的值,以检测微不足道的边缘情况,同时覆盖下一次运行中的所有可能输入。 许多其他功能正在进行中或已经可用:)

    干杯, 尼古拉斯

    【讨论】:

    • 我很少一次阅读图书馆的所有文档,但我有你的!迫不及待地想给它一个打击。我用过并且非常喜欢 JsVerify,所以我非常期待快速检查
    【解决方案3】:

    我写了quick_check.js,它有一个很好的生成器库。收缩尚未出现,但已在计划中。

    【讨论】:

      【解决方案4】:

      在 javascript 中似乎缺乏类似快速检查的良好测试工具。但是,它们将在类型化语言中得到更好的支持,事实上,如果您愿意,您可以使用其中一种语言编写测试。

      为避免处理运行时互操作,我建议使用编译为 JS 并在 node.js 上运行的语言(例如:Purescript with purescript-quickcheck),或者使用 Java 8 中提供的 Nashorn 引擎的基于 Java 的语言,例如ScalaCheck。您甚至可以使用 ghcjs 和 quickcheck 库的原始风格!

      【讨论】:

      • 这些天我在使用 elm,因为我对 JavaScript 的兴趣 100% 在于浏览器操作。对于后端代码,我使用 erlang
      • 我打算在我的回答中包含 Elm 和 github.com/TheSeamau5/QuickCheck,但 PureScript 与 javascript 集成得更好(至少在 Elm 0.16 之前......)
      • @jazmit 有一个更新的基于属性的测试库来自同一作者的 Elm:github.com/TheSeamau5/elm-check
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2023-03-07
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多