[clojure] Clojure에서의 테스트 관련 메타 데이터 활용

Clojure는 메타 데이터를 활용하여 함수나 데이터에 추가 정보를 부여하는 것을 지원합니다. 이러한 메타 데이터는 주석과 비슷하게 사용되지만, 프로그램의 실행에는 영향을 주지 않으면서 런타임 시에 데이터에 대한 추가 정보를 제공합니다. 이번 블로그에서는 Clojure의 테스트 관련 메타 데이터를 활용하는 방법에 대해 알아보겠습니다.


메타 데이터란 무엇인가?

메타 데이터는 Clojure의 데이터나 심지어 함수와 같은 코드의 조각들과 연결된 추가적인 정보를 포함하는데 사용됩니다. 메타 데이터는 ^ 기호를 사용하여 붙일 수 있습니다. 예를 들어, 다음은 정수 42에 :important라는 키와 그 값으로 "yes"를 가지는 메타 데이터를 붙인 예시입니다.

(def x (with-meta 42 {:important "yes"}))

테스트에서의 메타 데이터 활용

Clojure에서는 테스트 코드에서 메타 데이터를 활용하여 태깅(tagging)그룹화(grouping)를 할 수 있습니다. 테스트를 구성할 때 특정 함수나 테스트 케이스들에 메타 데이터를 추가하면, 나중에 특정 기준에 따라 테스트를 골라내거나 실행할 때 유용합니다.

예를 들어, clojure.test 라이브러리에서 제공하는 deftest 매크로를 사용하여 테스트 함수를 정의할 때 메타 데이터를 추가할 수 있습니다. 다음은 :smoke라는 키워드를 사용하여 테스트를 smoke 테스트로 태그하는 예시입니다.

(deftest ^:smoke test-smoke
  (testing "smoke test"
    (is (= 2 (+ 1 1)))))

이렇게 하면, :smoke 메타 데이터가 붙은 테스트 함수를 실행하거나 제외할 수 있습니다.

테스트 실행 시 메타 데이터 활용

clojure.test 라이브러리의 run-tests 함수를 사용하여 테스트를 실행할 때에도 메타 데이터를 활용할 수 있습니다. 예를 들어, run-tests 함수의 :only 파라미터를 사용하여 특정 메타 데이터를 가진 테스트만 실행할 수 있습니다.

(run-tests :only :smoke)

이 예시에서는 :smoke 메타 데이터가 붙은 테스트 함수들만 실행됩니다.


메타 데이터를 활용하여 테스트 함수나 테스트 케이스들을 태깅하고 그룹화하는 것은 테스트 코드의 유지보수 및 실행에 편의성을 제공합니다. Clojure의 테스트 관련 메타 데이터를 활용하여, 개발자는 테스트를 보다 효율적으로 관리하고 실행할 수 있습니다.

관련 자료: Clojure Docs - Metadata