在lein测试中排除具有特定选择器的测试



我在基于莱宁根的Clojure项目中有一套测试。

我想经常运行中的大多数,但我想排除那些使用:integration选择器的程序,因为它们速度慢且不稳定。

如果我理解正确的话,莱宁根有一个内置的:only选择器,它将只运行匹配的测试:

lein test :only :integration

我想要一个:not选择器,它的作用正好相反(运行除:integration之外的所有选择器(。

lein test :not :integration

有没有办法用lein test提供的设施来建造这个?

我知道我可以写一个类似(complement :integration)的fn,并将其放在我的project.clj中的:test-selectors映射中,但它很难被编码为忽略:integration——我真正想要的是一个通用的:not,我可以用关键字对其进行参数化,所以在其他情况下我可以忽略我的:slow:flaky测试。

我不认为你可以用关键字来做这件事,因为它们被Leiningen当作参数。但是,您可以创建一个自定义测试选择器,通过它传递一个字符串:

:test-selectors {:not (fn [m s] (not (contains? m (keyword s))))}

您可以使用lein test :not integrationlein test :not flaky进行呼叫。

最新更新