clojure.spec 打算在多大程度上取代传统的功能自动化测试?

To what extent is clojure.spec intended to replace traditional functional automation testing?

随着有关 Clojure 1.9 中新 clojure.spec 功能的截屏视频和博客开始出现,越来越明显的是 clojure.spec 能够做很多以前由更多人执行的风险缓解工作"traditional" 自动化测试库,例如 clojure.test、midje、speclj 和 test.check。

是否打算在 clojure.spec 中复制 clojure.test 的功能?如果您今天开始在 Clojure 1.9+ 下构建一个 运行 的新应用程序,您是否会搁置我上面列出的测试库,而仅依靠 clojure.spec 来获得类似的信心围绕您应用的行为?

Is the intent that the capabilities of clojure.test will be essentially replicated within clojure.spec?

  • 不,clojure.test 的功能不会在 clojure.spec
  • 中复制
  • 基于示例的测试和生成测试是针对不同需求的不同工具,尽管存在重叠

If you were starting to build a new app today to run under Clojure 1.9+, would you be setting aside the testing libraries I listed above and instead relying solely on clojure.spec to give you a similar level of confidence around your app's behaviour?

  • 我将在大多数项目中同时使用(并建议)基于示例的测试和生成式测试
  • 但是,我认为将基于示例的测试套件与 clojure.spec
  • 结合使用时,基于示例的测试会少得多

Why not all clojure.spec? (implied)

  • 有些东西很难规范
  • 有些东西很难为
  • 编写生成器
  • 在文件中包含示例 input/output 对于刚刚阅读代码的人来说很好
  • 单元测试在大多数成熟的项目中都非常受欢迎
  • 还有更多

稍微偏离主题,但只是友好地提醒一下,clojure.spec 比减少项目中的单元测试用例的数量更有用。