请分享您的想法,参与 2024 Clojure 状态调查!

欢迎!请参阅 关于 页面,了解更多有关如何使用本站的信息。

0
测试

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

因此,对于具有多个 `testing` 子句的给定 `deftest`,`use-fixtures` 将只运行一次。

从 RSpec(Ruby)背景来看,这令人惊讶 - 默认行为相反,并且我认为这更直观。

个人而言,这导致了写出给出错误阳性的测试 - 也就是说,这使得我的测试套件中的一部分变得无用,直到我偶然发现了这个问题。

据我所知,我与另一位 Clojure 开发者讨论了这个问题,他也遇到过这个问题。我的意思是,我不是唯一一个,而且肯定还有其他开发者在没有 JIRA 报告的情况下遇到过这个问题。

无论如何,当前工作的替代方案(对于每个依赖于 use-fixtures 的测试使用一个 deftest)可能过于冗长(与我的原始尝试相比),而且需要在最初就这样做,很容易就会忘记。

我想请求数

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

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

祝好 - Victor

2 个答案

0
by

评论者:alexmiller

您好,Victor,如果您在描述中提供一个完整的代码示例将很有帮助。

在文档中,固定装置似乎定义得相当明确(请参阅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 报告)
...