请在 2024 年 Clojure 调查表 中分享您的想法!

欢迎!请查看 关于 页面以获取更多关于如何工作的信息。

+7
测试

在查看使用 clojure.test 编写的测试的 (log) 输出时,我希望能够识别与每个测试相关的输出。在 :each fixture 中暴露当前测试 var 的机制可以实现这一目标。

一种机制可能是通过在调用 clojure.test/test-all-vars 中的 each-fixture-fn 之前绑定一个 test-var var 来当前测试 var。

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

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

补丁: clj840-20161122.diff

你好,我想提供一些意见,表示我会认为这个功能的添加对我的 Clojure 测试库很有用。

对我来说,Duncan 的 4 行补丁足以添加 `*test-var*` 并在 `each-fixture-fn` 形式周围绑定它。

我打算在一个基于基础 `clojure.test` 块(`deftest` + fixtures)重实现的 `state-flow` 测试库中使用此功能,以实现与现有 Clojure 工具生态系统更好的集成。由于无法在 fixtures 中访问当前的测试变量,我无法在 fixtures 中进行某些测试设置(可参考https://gist.github.com/philomates/32f8e1f7a2a4e746ac0186964aaaa2d3#file-flow-clj-L74,它展示了代码中的用例)。

17 个回答

0
by

由 joelittlejohn 发表的评论

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

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