我在基于莱宁根的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 integration
或lein test :not flaky
进行呼叫。