自动化测试
测试客户端应用程序
为了使用测试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)
下面的事情需要注意上面的代码
我们首先必须确保使用'require'语句来包含'speclj'框架中的所有核心库。
接下来是'describe'函数。这用于为正在创建的测试用例提供描述。
在第一个测试用例中,“是true”字符串是给测试用例的名称。
应该和应该不是所谓的断言。所有和断言都以应该开头。应该和应该不是可用的许多断言中的两个。他们都采取表达式,他们将分别检查真实性和假性。
如果运行测试用例,您将获得以下输出。输出显示测试用例运行所花费的时间(以毫秒为单位)。
←[32m.←[0m←[32m.←[0m
Finished in 0.00014 seconds
测试基于Web的应用程序
Selenium是用于测试现代基于Web的应用程序的关键框架之一。Clojure库也可用于测试基于Web的应用程序。
让我们来看看如何使用硒库来测试基于Web的Clojure应用程序。
步骤1 - 。第一步是确保我们使用环和的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))
http://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server/2.47.0,第2步 -开始确保下载硒jar文件,将其包含在类路径中。
第3步 -还要确保下载“CLJ”网络驱动程序,该驱动程序将用于从以下位置运行的Web测试https://clojars.org/clj-webdriver/versions/0.7.1
第4步 -在您的项目目录中,创建另一个名为features的目录,并创建一个名为“ config.clj”的文件。
第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 "/"))
上面的代码基本上告诉web测试框架来测试应用程序,这是在URL加载http:// localhost:3000
第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”消息。
- 关闭浏览器。
- 关闭服务器。