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

欢迎!请参阅关于页面以了解更多关于如何使用此网站的信息。

0
测试

目前实现中,clojure.test/use-fixtures 钩子将在每个 deftest的基础上运行,但不会在每个 testing (clojure.test/testing) 的基础上运行。

所以,对于给定的具有多个 testingClauses 的 deftest,use-fixtures 只会运行一次。

从 RSpec (Ruby) 的背景来看这一点令人惊讶——默认行为正好相反,在我看来更为直观。

我个人这样做导致我编写的测试给出了错误的阳性——即,直到我偶然注意到这一点(碰巧)之前,我的测试套件的一部分实际上是无效的。

轶事式地,我和另一位 Clojure 开发者讨论了这个问题,他第一次也遇到了这个问题。我的意思是,在这件事情上我不孤单,并且肯定有其他开发者也有过类似的经历,即使在此之前没有 JIRA 的报告。

无论如何,当前的替代工作做法(每个使用 use-fixtures 的 test 只使用一个 deftest)可能过于冗长(与我的原始尝试相比),而且开始这样的做法也容易忘记。

我希望提出以下请求:

  • 实现 use-fixtures 的一个选项,例如 {{:run-nested?}}
  • 使此选项成为强制性的,即程序员要么传递 {{:run-nested? true}} 或 {{:run-nested? false}},除非事先已设置全局默认值。人们应该意识到这种细微差别,并被迫至少思考一次(否则他们可能会遇到错误的阳性和阴性)

我希望这听起来像是一个合理的、必要的、非破坏性的提案。

好运——维克多

2 个答案

0

评论者:alexmiller

嗨维克多,如果你能在说明中提供一个完整的代码示例将有所帮助。

在文档中,设置(Fixtures)看起来定义得相当清楚(见https://github.com/clojure/clojure/blob/master/src/clj/clojure/test.clj#L158-L193),并且与作为变量中函数的测试调用紧密相关。在每个testing上进行调用对我来说感觉有很大的不同。

另一个选项是创建一个具有不同范围的新类型设置,它会在特定的testing块中重新调用,就像一个:group断言。我想这也适用于嵌套的testing块?

我对需要这种类型测试的类型没有很好的概念,所以我提出了一个示例请求。

0
参考:https://clojure.atlassian.net/browse/CLJ-2242(由alex+import提供)
...