在本章中,我們將討論由Clojure提供的自動(dòng)測(cè)試選項(xiàng)。
為了使用測(cè)試Clojure框架,你必須使用位于的依賴項(xiàng) https://github.com/slagyr/speclj#manual-installation
此URL提供了speclj框架,用作Clojure的Test數(shù)據(jù)驅(qū)動(dòng)或行為驅(qū)動(dòng)測(cè)試框架。 你必須確保在使用任何'speclj'庫(kù)時(shí)使用Clojure 1.7.0框架。 默認(rèn)情況下,測(cè)試文件將不同于Clojure代碼文件,需要放置在'spec'目錄中。
以下是測(cè)試文件的示例代碼。
(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)
下面的事情需要注意上面的代碼
我們首先必須確保使用'require'語(yǔ)句來包含'speclj'框架中的所有核心庫(kù)。
接下來是'describe'函數(shù)。 這用于為正在創(chuàng)建的測(cè)試用例提供描述。
下一個(gè)函數(shù)是'it'函數(shù),這是實(shí)際的測(cè)試用例。 在第一個(gè)測(cè)試用例中,“is true”字符串是給測(cè)試用例的名稱。
應(yīng)該和應(yīng)該不稱為斷言。 所有斷言都以should開頭。 應(yīng)該和應(yīng)該不是可用的許多斷言中的兩個(gè)。 他們都采取表達(dá)式,他們將分別檢查真實(shí)性和假性。
如果運(yùn)行測(cè)試用例,您將獲得以下輸出。 輸出顯示測(cè)試用例運(yùn)行所花費(fèi)的時(shí)間(以毫秒為單位)。
←[32m.←[0m←[32m.←[0m Finished in 0.00014 seconds
Selenium是用于測(cè)試現(xiàn)代基于Web的應(yīng)用程序的關(guān)鍵框架之一。 Clojure庫(kù)也可用于測(cè)試基于Web的應(yīng)用程序。
讓我們來看看如何使用Selenium庫(kù)來測(cè)試基于Web的Clojure應(yīng)用程序。
步驟1 -第一步是確保我們使用Ring和Compojure框架來創(chuàng)建一個(gè)需要測(cè)試的基于Web的應(yīng)用程序。 讓我們使用前面章節(jié)中的一個(gè)例子。 以下代碼是一個(gè)簡(jiǎn)單的Web應(yīng)用程序,它在瀏覽器中顯示“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))
第2步 -下一步確保下載selenium jar文件,并將其包含在類路徑中。 http://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server/2.47.0
第3步 -還要確保下載“clj”Web驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序?qū)⒂糜趶囊韵挛恢眠\(yùn)行Web測(cè)試。https://clojars.org/clj-webdriver/versions/0.7.1
第4步 -在您的項(xiàng)目目錄中,創(chuàng)建另一個(gè)名為features的目錄,并創(chuàng)建一個(gè)名為“config.clj”的文件。
第5步 -接下來,將以下代碼添加到上一步中創(chuàng)建的“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 "/"))
上面的代碼基本上告訴web測(cè)試框架來測(cè)試應(yīng)用程序,這是在URL加載 http://localhost:3000
第6步 -最后,讓我們編寫我們的代碼來執(zhí)行我們的測(cè)試。
(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)))
上面的代碼將采取以下操作
更多建議: