清單 15 顯示了如何使用幾個參數配置控制臺。該控制臺會在 DOM 元素內部呈現,其 id 為 testLogger。
需要更新 HTML 運行程序。添加該控制臺所引用的 DOM 元素,如清單 16 所示。
清單 16. 更新后的 HTML 運行程序支持 Yahoo!Console
<body class="yui3-skin-sam"> <div id="testLogger"></div> </body> |
本例為 設置了一個類,名為 yui3-skin-sam。該類負責定義控制臺的皮膚。
圖 3 顯示了運行測試之后的控制臺。
圖 3. YUI Test 結果
回頁首
使用 JSTestDriver 輕松測試
通過使用功能強大的 JSTestDriver (JSTD) 工具,您能夠在多個瀏覽器中從命令行運行 JavaScript。JSTD 帶有一個 JAR 文件,它可以讓您啟動服務器、捕獲一或多個瀏覽器并在這些瀏覽器中運行測試。因為擁有上述的兩個框架,您不需要 HTML 運行程序,但您需要一個配置文件。圖 17 顯示了配置文件。
清單 17. 配置文件 (jsTestDriver.conf)
server: http://localhost:4224 load: - js/src/*.js test: - js/test/*.js |
該配置文件是用 YAML 編寫的,這是一種很好的配置文件格式。它包含了要啟動的服務器以及源代碼和測試文件的位置信息。
要使用 JSTD 來執行測試:
啟動測試服務器。從命令行中,進入到保存 jsTestDriver.jar 的文件夾,并執行以下命令:
java -jar JsTestDriver-1.3.3d.jar -port 4224 |
清單 17 中指定的端口應該與配置文件中指定的一樣。在默認情況下,JSTD 會在 JAR 文件所在的同一個目錄下查找 jsTestDriver.conf 文件。
在測試中,通過將 URL http://localhost:4224/capture 復制粘貼到測試中的瀏覽器,在服務器上注冊一個或多個瀏覽器。
測試之前示例中所使用的相同代碼(清單 5),但這次使用 JSTD 語法。清單 18 顯示了如何轉換 清單 10 的 QUnit 和 清單14 的 YUI Test 中的代碼。
清單 18. JSTD 測試
TestCase("Temperature conversion", { setUp : function () { this.celsius1 = 20; this.celsius2 = 30; this.fahrenheit1 = 68; this.fahrenheit2 = 86; }, testConversionCtoF: function () { assertSame(this.fahrenheit1, convertFromCelsiusToFahrenheit(this.celsius1)); assertSame(this.fahrenheit2, convertFromCelsiusToFahrenheit(this.celsius2)); }, testConversionFtoC: function () { assertSame(this.celsius1, convertFromFahrenheitToCelsius(this.fahrenheit1)); assertSame(this.celsius2, convertFromFahrenheitToCelsius(this.fahrenheit2)); } }); |
清單 18 中的代碼與 YUI 版本差別不大。JSTD 使用 TestCase() 函數來定義測試用例。您可以使用內聯聲明來定義測試方法,如清單 18 所示,或者可以擴展 TestCase 實例的原型。每個測試用例還可以使用 SetUp() 和 tearDown() 方法。
如果要運行測試,運行以下命令:
java -jar JsTestDriver-1.3.3d.jar --tests all |
圖 4 顯示了終端上的輸出結果。
圖 4. JSTD 測試的結果
測試會傳入之前捕獲到的所有瀏覽器(Chrome 15、Safari 5 和 Firefox 7)。
JSTD 還能與您偏好的連續集成系統很好地集成,成為連續版本的一部分。它還能與 IDE 集成,如 Eclipse(插件)或 TextMate(包)。
回頁首
結束語
隨著現在對 Web 應用程序客戶端的關注,對 JavaScript 進行單元測試就顯得尤為必要。有很多框架可以幫助您完成此任務,本文介紹了三個最流行的框架:QUnit、YUI Test 和 JSTestDriver。
QUnit 非常簡單,很適合初學者的框架。
YUI Test 是個全面的工具,適合熟悉 YUI 庫的用戶。
JSTestDriver 可在多個瀏覽器中運行測試。