Clojure - 自动化测试

Clojure - 自动化测试 首页 / Clojure入门教程 / 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)

关于上述代码,需要注意以下几点:

链接:https://www.learnfk.comhttps://www.learnfk.com/clojure/clojure-automated-testing.html

来源:LearnFk无涯教程网

  • 我们首先必须确保使用'require'语句将所有核心库包含在'speclj'框架中。

  • 接下来是"describe"函数,这用于为正在创建的测试用示例提供描述。

  • 下一个函数是" it"函数,它是实际的测试用示例,在第一个测试用示例中," is true"字符串是赋予测试用示例的名称。

  • should和should-not被称为断言,所有断言都应以"should"开头,应该和不应该只是可用的许多断言中的两个。

如果运行测试用示例,将获得以下输出。输出显示测试用示例运行所花费的时间(以毫秒为单位)。

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

测试Web程序

硒是用于测试现代基于Web的应用程序的关键框架之一, Clojure库也可用,可用于测试基于Web的应用程序。

让我们看看如何使用Selenium库来测试Clojure基于Web的应用程序。

无涯教程网

步骤1   -   第一步是确保我们使用Ring and Compojure框架来创建基于Web的应用程序,需要对其进行测试以下代码是一个简单的Web应用程序,它在浏览器中显示" Hello Learnfk"。

(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 Learnfk")
   (route/not-found "Not Found"))
(def app
   (wrap-defaults app-routes site-defaults))

步骤2    -   下确保下载硒jar文件https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server/2.47.0 并将其包含在类路径中。

步骤3    -    还要确保下载" clj"网络驱动程序,该驱动程序将从以下位置用于运行网络测试。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 Learnfk"))
      (stop-browser)
      (stop-server server)))

上面的代码将采取以下措施-

  • 启动该应用程序的服务器。
  • 在浏览器中打开根路径。
  • 检查页面上是否显示" Hello Learnfk"消息。
  • 关闭浏览器。
  • 关闭服务器。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

成为AI产品经理 -〔刘海丰〕

MySQL 必知必会 -〔朱晓峰〕

技术面试官识人手册 -〔熊燚(四火)〕

性能优化高手课 -〔尉刚强〕

深入C语言和程序运行原理 -〔于航〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

快速上手C++数据结构与算法 -〔王健伟〕

手把手带你写一个MiniSpring -〔郭屹〕

好记忆不如烂笔头。留下您的足迹吧 :)