按照当前实现,{{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