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

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

0
测试

按照当前实现,{{clojure.test/use-fixtures}} 插件将在每次 {{deftest}} 运行时运行,但不会在每次 {{clojure.test/testing}} 测试运行时运行。

因此,在具有多个 {{testing}} 子句的给定 {{deftest}} 中,{{use-fixtures}} 只会运行一次。

对我来说,这是从 RSpec (Ruby) 背景过来的一个意外惊喜 - 默认行为正好相反,在我看来这更加直观。

我个人在这点上编写了一些会产生误报的测试 - 即它使我的测试套件的部分测试变得无用,直到我偶然注意到这个问题(幸运的是)。

从轶事中,我与另一个 Clojure 开发者讨论了这个问题,他也遇到了同样的问题。我的意思是,在这个问题上,我并不孤单,并且肯定其他开发者也会遇到这个问题,尽管到目前为止还没有 JIRA 报告。

无论如何,当前的工作替代方案(每个使用 use-fixtures 的 deftest)可能会过于冗长(与我的原始尝试相比),并且还需要做一些事情,而这种需求很容易被遗忘。

我建议

  • 实现一个名为 e.g. {{:run-nested?}}
  • 将该选项指定为必填项,即程序员必须传递 {{:run-nested? true}} 或 {{:run-nested? false}},除非事先设置了一个全局默认值。人们应该意识到这个细微差别,并至少思考一次(否则他们可能产生误报/误判)

我希望这个提案听起来合理、必要且不会破坏现有功能。

祝好,Victor

2 答案

0

评论由:alexmiller

嗨 Victor,您能否在描述中提供一个完整的代码示例?

在我看来,文档中对测试固定装置的描述十分明确(见此处),并且与测试作为函数在var中的调用紧密相关。我认为,在每一个testing中调用它们似乎有很大的区别。

另一种选择是创建一种具有不同作用域的新 fixture,它在特定的testing块,例如:group断言中会被重新调用。我猜测这也会适用于嵌套的testing块?

我没有很好的感觉哪种测试需要这种 fixture,因此请求一个例子。

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