clojure
clojure.test
수색…
~이다.
is
매크로는 clojure.test
라이브러리의 핵심입니다. 표현식이 거짓 값을 반환하면 오류 메시지를 출력하여 본문 표현식의 값을 반환합니다.
(defn square [x]
(+ x x))
(require '[clojure.test :as t])
(t/is (= 0 (square 0)))
;;=> true
(t/is (= 1 (square 1)))
;;
;; FAIL in () (foo.clj:1)
;; expected: (= 1 (square 1))
;; actual: (not (= 1 2))
;;=> false
테스트 매크로를 사용하여 관련 테스트 그룹화
testing
매크로를 사용하여 컨텍스트 내에서 deftest
unit 테스트에서 관련된 어설 션을 그룹화 할 수 있습니다.
(deftest add-nums
(testing "Positive cases"
(is (= 2 (+ 1 1)))
(is (= 4 (+ 2 2))))
(testing "Negative cases"
(is (= -1 (+ 2 -3)))
(is (= -4 (+ 8 -12)))))
이는 실행할 때 테스트 출력을 명확하게하는 데 도움이됩니다. 참고 testing
돌며 발생해야 deftest
.
deftest로 테스트 정의하기
deftest
는 다른 언어의 단위 테스트와 비슷한 단위 테스트를 정의하는 매크로입니다.
다음과 같이 테스트를 만들 수 있습니다.
(deftest add-nums
(is (= 2 (+ 1 1)))
(is (= 3 (+ 1 2))))
여기서 우리는 +
함수를 테스트하는 add-nums
라는 테스트를 정의합니다. 이 테스트에는 두 가지 주장이 있습니다.
그런 다음 현재 네임 스페이스에서 다음과 같은 테스트를 실행할 수 있습니다.
(run-tests)
또는 테스트가있는 네임 스페이스에 대한 테스트를 실행할 수 있습니다.
(run-tests 'your-ns)
아르
가 are
매크로도의 일부입니다 clojure.test
라이브러리입니다. 그것은 당신이 템플릿에 대해 여러 어설 션을 할 수 있습니다.
예 :
(are [x y] (= x y)
4 (+ 2 2)
8 (* 2 4))
=> true
여기서, (= xy)
각 인자를 생성하고,이 주형으로 작용 is
그것의 주장.
다수가이 확장 is
주장 :
(do
(is (= 4 (+ 2 2)))
(is (= 8 (* 2 4))))
각 테스트 또는 모든 테스트를 사용 설비로 감싸십시오.
use-fixtures
는 테스트 전후에 실행되는 코드로 네임 스페이스의 각 deftest
을 감쌀 수 있습니다. 고정물이나 스터브에 사용할 수 있습니다.
Fixture는 테스트 기능을 수행하고 다른 필수 단계 (전 / 후, 랩)로 실행하는 기능입니다.
(ns myapp.test
(require [clojure.test :refer :all])
(defn stub-current-thing [body]
;; with-redefs stubs things/current-thing function to return fixed
;; value for duration of each test
(with-redefs [things/current-thing (fn [] {:foo :bar})]
;; run test body
(body)))
(use-fixtures :each stub-current-thing)
:once
와 함께 사용하면 함수를 사용하여 현재 네임 스페이스에있는 모든 테스트 실행을 래핑합니다.
(defn database-for-tests [all-tests]
(setup-database)
(all-tests)
(drop-database))
(use-fixtures :once database-for-tests)
Leiningen으로 테스트 실행하기
Leiningen을 사용하고 있으며 테스트가 프로젝트 루트의 테스트 디렉토리에 있다면 lein test
사용하여 테스트를 실행할 수 있습니다