Clojure-자동화 된 테스트

이 장에서는 Clojure에서 제공하는 자동 테스트 옵션에 대해 설명하겠습니다.

클라이언트 애플리케이션 테스트

Clojure 프레임 워크에 대한 테스트를 사용하려면 다음 위치에있는 종속성을 사용해야합니다. https://github.com/slagyr/speclj#manual-installation

이 URL은 speclj프레임 워크는 Clojure의 테스트 데이터 기반 또는 동작 기반 테스트 프레임 워크로 사용됩니다. 'speclj'라이브러리를 사용할 때 Clojure 1.7.0 프레임 워크를 사용하는지 확인해야합니다. 기본적으로 테스트 파일은 Clojure 코드 파일과 다르며 'spec'디렉토리에 배치해야합니다.

다음은 테스트 파일의 샘플 코드입니다.

(ns change.core-spec
   (:require [speclj.core :refer :all]))
(describe "Truth"
   (it "is true"
   (should true))
   (it "is not false"
   (should-not false)))
(run-specs)

위의 코드에 대해 다음 사항에 유의해야합니다.

  • 먼저 'speclj'프레임 워크의 모든 핵심 라이브러리를 포함하기 위해 'require'문을 사용해야합니다.

  • 다음은 '설명'기능입니다. 생성되는 테스트 케이스에 대한 설명을 제공하는 데 사용됩니다.

  • 다음 기능은 실제 테스트 케이스 인 'it'기능입니다. 첫 번째 테스트 케이스에서 "is true"문자열은 테스트 케이스에 지정된 이름입니다.

  • 해야 할 것과하지 말아야 할 것 assertions. 모든 주장은 should로 시작합니다. 해야 할 것과하지 말아야 할 것은 사용 가능한 많은 주장 중 두 가지입니다. 둘 다 진위와 허위를 각각 확인하는 표현을 사용합니다.

테스트 케이스를 실행하면 다음 출력이 표시됩니다. 출력은 테스트 케이스를 실행하는 데 걸린 시간 (밀리 초)을 표시합니다.

←[32m.←[0m←[32m.←[0m
Finished in 0.00014 seconds

웹 기반 응용 프로그램 테스트

Selenium현대 웹 기반 애플리케이션을 테스트하는 데 사용되는 주요 프레임 워크 중 하나입니다. 웹 기반 애플리케이션을 테스트하는 데 사용할 수있는 Clojure 라이브러리도 사용할 수 있습니다.

Clojure 웹 기반 애플리케이션을 테스트하기 위해 Selenium 라이브러리를 사용하는 방법을 살펴 보겠습니다.

Step 1− 첫 번째 단계는 테스트가 필요한 웹 기반 애플리케이션을 생성하기 위해 Ring 및 Compojure 프레임 워크를 사용하고 있는지 확인하는 것입니다. 이전 장의 예 중 하나를 사용하겠습니다. 다음 코드는 브라우저에 "Hello World"를 표시하는 간단한 웹 애플리케이션입니다.

(ns my-webapp.handler
   (:require [compojure.core :refer :all]
      [compojure.route :as route]
      [ring.middleware.defaults :refer [wrap-defaults site-defaults]]))
(defroutes app-routes
   (GET "/" [] "Hello World")
   (route/not-found "Not Found"))
(def app
   (wrap-defaults app-routes site-defaults))

Step 2 − 다음으로 셀레늄 jar 파일을 다운로드하십시오. https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server/2.47.0 클래스 경로에 포함하십시오.

Step 3 − 또한 다음 위치에서 웹 테스트를 실행하는 데 사용될 'clj'웹 드라이버를 다운로드하십시오.

https://clojars.org/clj-webdriver/versions/0.7.1

Step 4 − 프로젝트 디렉토리에서 features라는 다른 디렉토리를 생성하고 'config.clj'라는 파일을 생성합니다.

Step 5 − 다음으로 이전 단계에서 생성 한 'config.clj'파일에 다음 코드를 추가합니다.

ns clj-webdriver-tutorial.features.config)
(def test-port 3000)
(def test-host "localhost")
(def test-base-url (str "http://" test-host ":" test-port "/"))

위의 코드는 기본적으로 웹 테스트 프레임 워크에 URL에로드되는 애플리케이션을 테스트하도록 지시합니다. http://localhost:3000

Step 6 − 마지막으로 테스트를 수행하는 코드를 작성해 보겠습니다.

(ns clj-webdriver-tutorial.features.homepage
   (:require [clojure.test :refer :all]
      [ring.adapter.jetty :refer [run-jetty]]
      [clj-webdriver.taxi :refer :all]
      [clj-webdriver-tutorial.features.config :refer :all]
      [clj-webdriver-tutorial.handler :refer [app-routes]]))
(ns clj-webdriver-tutorial.features.homepage
   (:require [clojure.test :refer :all]
      [ring.adapter.jetty :refer [run-jetty]]
      [clj-webdriver.taxi :refer :all]
      [clj-webdriver-tutorial.features.config :refer :all]
      [clj-webdriver-tutorial.handler :refer [app-routes]]))
(defn start-server []
   (loop [server (run-jetty app-routes {:port test-port, :join? false})]
      (if (.isStarted server)
         server
         (recur server))))
(defn stop-server [server]
   (.stop server))
(defn start-browser []
   (set-driver! {:browser :firefox}))
(defn stop-browser []
   (quit))
(deftest homepage-greeting
   (let [server (start-server)]
      (start-browser)
      (to test-base-url)
      (is (= (text "body") "Hello World"))
      (stop-browser)
      (stop-server server)))

위의 코드는 다음 작업을 수행합니다.

  • 애플리케이션의 서버를 시작하십시오.
  • 브라우저에서 루트 경로를 엽니 다.
  • 페이지에 "Hello World"메시지가 있는지 확인하십시오.
  • 브라우저를 닫습니다.
  • 서버를 종료하십시오.