繁体   English   中英

使用clojure.test创建一个“慢速”测试套件

[英]Make a 'slow' test suite with clojure.test

我希望此测试与所有lein test一起运行:

(ns acker.core-test
  (:require [clojure.test :refer :all]
            [acker.core :refer :all]))

(deftest ackermann-test
  (testing "ack-1, ack-2, ack-3"
    (are [m n e]
         (= (ack-1 m n) (ack-2 m n) (ack-3 m n) e)
         0 0  1
         0 1  2
         0 2  3
         1 0  2
         1 1  3
         1 2  4
         2 0  3
         2 1  5
         2 2  7
         3 0  5
         3 1 13
         3 2 29)))

我想让ackermann-slow-test仅在需要时运行:

(deftest ackermann-slow-test
  (testing "ackermann (slow)"
    (are [m n e] (= (ack-3 m n) e)
         3 3     61
         3 4    125
         4 0     13
         4 1  65533)))

完整的代码可以在Github上找到: https : //github.com/bluemont/ackermann

根据Phil Hagelberg的“ 让Leiningen为您服务”, test-selectors功能已在1.4版中添加到Leiningen

两个简单的步骤。 首先,将其添加到project.clj

:test-selectors {:default (complement :slow)
                 :slow :slow
                 :all (constantly true)}

其次,使用元数据标记测试:

(deftest ^:slow ackermann-slow-test
  (testing "ackermann (slow)"
    (are [m n e] (= (ack-3 m n) e)
         3 3     61
         3 4    125
         4 0     13
         4 1  65533)))

现在,您可以使用三个选项来运行测试:

⚡ lein test
⚡ lein test :slow
⚡ lein test :all

此外,可以通过lein test -h轻松找到此信息:

运行项目的测试。

用元数据标记deftest或ns表单,使您可以选择选择器来指定要运行的测试套件的子集:

 (deftest ^:integration network-heavy-test (is (= [1 2 3] (:numbers (network-operation))))) 

将选择器写入project.clj:

 :test-selectors {:default (complement :integration) :integration :integration :all (constantly true)} 

如果该任务的参数是关键字,则将其视为测试选择器,否则参数必须是要运行的测试名称空间或文件。 如果没有参数,则使用:default测试选择器(如果存在),否则将运行所有测试。 测试选择器参数必须位于名称空间列表之后。

默认的:only test-selector可用于运行选择测试。 例如, lein test :only leiningen.test.test/test-default-selector仅运行指定的测试。 默认的:all test-selector可用于运行所有测试。

参数:([&tests])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM