수색…


~이다.

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 사용하여 테스트를 실행할 수 있습니다



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow