如何从REPL运行所有项目的测试?

4

如何从REPL中运行所有Leiningen项目的测试? Leiningen的lein test 命令可以做到这一点。但如何在REPL中实现呢?


你有什么想法,为什么不想使用Leiningen或Maven呢? - Chiron
1
@Chiron 我可以想到一个选择REPL而不是maven或lein的原因:在开发过程中,从REPL运行测试通常比lein test快几个数量级。 - Joost Diepenmaat
@JoostDiepenmaat,请注意我并没有说这是一个愚蠢的想法。 - Chiron
@Chiron,我并不是想暗示你这样做了。我会修改评论。 - Joost Diepenmaat
@Chiron,问题是如何从REPL运行与JVM已经运行的lein test等效项,而不是从CLI运行。至于为什么,正如@Joost所提到的那样,这样做更快,并且可以集成到其他在JVM中运行的交互式开发例程中。 - Dominykas Mostauskis
1个回答

7
您可以通过调用(clojure.test/run-all-tests)运行所有当前加载的测试。
请注意,这不会自动加载您想要运行的测试。如果您的测试可以通过"lein test"运行,则应该能够像任何其他命名空间一样require测试命名空间。
如果您正在使用带有CIDER的emacs,则还应该能够在命名空间中执行C-c ,以运行其测试(如果之前未加载该测试,则加载该测试)。

run-all-tests 同时运行依赖项的测试。至少对于每个依赖项,它都会打印 Testing x。相比之下, lein test 仅运行当前 Leiningen 项目中定义的测试。 - Dominykas Mostauskis
我认为缺失的部分是找出哪些测试实际上是“当前项目”的一部分,而clojure.test并不涉及项目的概念,只涉及加载到当前clojure程序中的任何内容(大多数情况下,依赖项的测试未加载,但它会检查每个已加载包的测试)。我的当前工作流程是从Emacs运行cider-test-run-tests以获取有关当前包的快速测试/代码反馈,并在后台运行lein test以对整个项目进行测试。 - Joost Diepenmaat
我同意。我打算问另一个问题,类似于“如何获取当前项目的命名空间列表”。 - Dominykas Mostauskis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接