2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以了解更多关于这个网站的运作信息。

+7 投票
测试

在查看使用 clojure.test 编写的测试的 (log) 输出时,我想要能够识别与每个测试关联的输出。在每个 fixture 中暴露当前测试变量的机制将实现这一点。

一种机制可能是在调用 clojure.test/test-all-vars 中的 each-fixture-fn 之前,将一个带有当前测试变量的 test-var 变量绑定。

提议: 提出的补丁 (clj840-20161122.diff) 允许 'each' fixture 通过使用 * } 访问与当前正在执行的测试相关的变量。由于这个变化,'each' fixture 能够访问与当前测试变量相关的元数据,包括名称。

该补丁通过改变当测试及其相关的 'each' fixture 运行时函数包装的顺序来实现上述目标。在补丁之前,'each' fixture 被组合成一个单一的高阶函数,然后向它提供一个包含调用 {{test-var}} 函数的 thunk 作为其主体。在此补丁之后,{{test-var}} 函数现在负责联合和执行 'each' fixture,但重要的是,它是在将当前测试变量添加到 * } 的绑定表达式的范围内完成的。现在 {{test-var}} 调用联合 fixture 函数,而不是给联合 fixture 函数提供一个调用 {{test-var}} 的 thunk。

补丁: clj840-20161122.diff

你好,我想评论一下,我想说我会发现这个功能的有用性在我的 Clojure 测试库中。

对于我的用例,Duncan 的 4 行补丁添加了 `*test-var*` 并在 `each-fixture-fn` 形式周围进行绑定就足够了。

我会利用这个特性在 `state-flow` 测试库的重构中使用基本的 `clojure.test` 块(`deftest` + fixture),以更好地与现有的 Clojure 工具生态系统集成。没有在 fixture 中访问当前测试变量的能力,我无法在 fixture 中找到某种测试设置的方法([source](https://gist.github.com/philomates/32f8e1f7a2a4e746ac0186964aaaa2d3#file-flow-clj-L74) 中用代码草拟了用例)

17 个回答

0

评论由:joelittlejohn 发布

感谢花费时间考虑这个待办事项列表,Alex。非常感激。我会调查这些事情。

0
参考:https://clojure.atlassian.net/browse/CLJ-840 (由 hugoduncan 报告)
...