2024 Clojure现状调查中分享您的想法!

欢迎!有关如何使用该平台的信息,请参阅关于页面。

0
引用、代理、原子

根据2016年3月3日与Alex Miller在clojure-dev上的讨论,Alex建议我们应向clojure.core/atom功能添加测试,目前尚无此类测试。

我提出了以下测试方案:
- 构造原子的各种方式(带有和没有验证器和元数据的)
- 验证器正确抛出异常
- 添加和删除观察者以及它们是否按预期触发。
- 改变值的各种方式(不针对查找高负载并发问题或病态案例等)。
- IAtom接口的.swap方法的arity按预期工作 - 即无反射警告(需要此类情况的帮助/提示!)
- 生成测试,尝试在原子中查找错误(上述排除的内容)。

Alex建议进行生成测试,但不要进行性能测试。

补丁"0001-atom-unit-tests.clj"(附件)包含以下单元测试:

  • 创建“裸”原子
  • .created atom with validator
  • 触发 validate-fn 并且原子未更改
  • 使用 deref (@) 读取宏创建正确的'(clojure.core/deref a)
  • CAS对普通值有效(没有触发验证器等情况)。

这些测试未涵盖许多组合,但这只是一个开始。

要涵盖所有情况(例如使用无效值进行 cas 以及其他奇怪的事情),生成测试确实是必需的。

1 答案

0
...