qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          使用JsTestDriver實(shí)現(xiàn)JavaScript單元測(cè)試

           一點(diǎn)點(diǎn)必要的廢話
            JavaScript的發(fā)展大體上經(jīng)歷了下面幾個(gè)比較大的階段:
            第一階段:石器時(shí)代。
            基本上沒(méi)有任何框架和工具,而且各種瀏覽器混戰(zhàn),API相當(dāng)混亂,開(kāi)發(fā)和測(cè)試都非常痛苦。
            第二階段:刀耕火種。
            出現(xiàn)了一些簡(jiǎn)單的、小型的工具,比如prototype/mootools之類(lèi)的。
            第三階段:農(nóng)耕文明。
            2005年左右,Ajax、JSON等技術(shù)開(kāi)始興起,并且以非常快的速度普及。這個(gè)階段出現(xiàn)了jQuery之類(lèi)的神器,但是還是有大量的問(wèn)題沒(méi)有解決,開(kāi)發(fā)和測(cè)試依然非常痛苦,各種工具很亂,學(xué)習(xí)過(guò)程漫長(zhǎng)。
            第四階段:規(guī)模化、結(jié)構(gòu)化。
            前端代碼的規(guī)模越來(lái)越大,結(jié)構(gòu)化、模塊化的呼聲越來(lái)越高,開(kāi)始出現(xiàn)專(zhuān)業(yè)的“前端工程師”這樣的職業(yè)。各個(gè)互聯(lián)網(wǎng)大佬都開(kāi)始組建自己的UED部門(mén),比如騰訊的CDC、淘寶的UED、網(wǎng)易的UEDC。
            對(duì)于前端開(kāi)發(fā)來(lái)說(shuō),這一階段已經(jīng)發(fā)生了思想上飛躍。此時(shí)前端考慮的問(wèn)題已經(jīng)不僅僅是“如何把界面做得好看”這么簡(jiǎn)單了,對(duì)前端的要求已經(jīng)提升到了“用戶體驗(yàn)”的層次,界面“好看”只是其中一部分,還要做交互設(shè)計(jì),怎么讓用戶操作更方便、怎么讓界面更人性化,如此等等。 在這個(gè)階段出現(xiàn)了很多重量級(jí)的框架,大體上分2個(gè)體系:一個(gè)是以jQuery為內(nèi)核的前端框架,例如jQueryUI之類(lèi)的各類(lèi)UI;另一個(gè)就是自成體系的ExtJS。
            (有人可能會(huì)說(shuō)還有Flex、SilverLight、JavaFX之類(lèi)的東西呢!這里專(zhuān)門(mén)說(shuō)JS,那些先不管,謝謝。)
            第五階段:工業(yè)化、多平臺(tái)。
            JavaScript代碼不僅僅規(guī)模更加龐大,而且要支持各種平臺(tái)。2008年之后,安卓異軍突起,加上iPhone的強(qiáng)勢(shì)插入,移動(dòng)平臺(tái)上的UI 設(shè)計(jì)日益收到重視。移動(dòng)平臺(tái)的迅速崛起進(jìn)一步刺激了桌面UI體系的演進(jìn),jQeury推出了jQuery Mobile,ExtJS推出了自己的Touch版本,其它各種衍生框架也都出現(xiàn)了Touch版本。
            我們知道,科技領(lǐng)域的工業(yè)化是以機(jī)器代替人力為核心特征的,對(duì)比前端代碼的工業(yè)化,我們立刻就會(huì)發(fā)現(xiàn),自動(dòng)化程度依然不夠。雖然出現(xiàn)了像WebStorm這樣的前端開(kāi)發(fā)神器,但是對(duì)于自動(dòng)化測(cè)試性能測(cè)試之類(lèi)的需求,依然沒(méi)有成熟的、統(tǒng)一的工具。
            近來(lái)TDD(Test Driving Develop)的概念越來(lái)越熱,加上來(lái)自Google的AnguarJS框架開(kāi)始流行,TDD正在被廣泛接受。因此,在這個(gè)階段,必須解決工具的問(wèn)題,而自動(dòng)化測(cè)試工具就是其中需求最強(qiáng)烈的一個(gè)工具。
            好,廢話結(jié)束,開(kāi)始玩兒JsTestDriver。
            JsTestDriver簡(jiǎn)介
            完整介紹參見(jiàn)官方的頁(yè)面
            安裝Eclipse插件
            請(qǐng)使用Eclipse的插件安裝工具
            注意:
            1、Eclipse版本不能太低。
            2、如果在線安裝不成功,可以把插件下載到本地,然后再用Eclipse的插件安裝工具從本地安裝。
            3、只安裝JS Test Driver Plugin for Eclipse,其它的不要安裝,否則會(huì)報(bào)沖突。
            安裝完成之后,開(kāi)始配置JsTestDriver,步驟如下:
            第一步:配置JsTestDriver服務(wù)器
            在Eclipse的菜單中選擇Window->Preferences,在左側(cè)找到JS Test Driver。
            第二步:打開(kāi)JsTestDriver的控制面板
            在Eclipse頂部的菜單中選擇Window->Show View,找到JsTestDriver并雙擊,這樣JsTestDriver的控制面板就顯示出來(lái)了。
            好,到這里安裝配置就算完成了,接下來(lái)我們來(lái)做一個(gè)最簡(jiǎn)單的例子試試手感。 最簡(jiǎn)單的例子
            第一步:在Eclipse中新建一個(gè)WEB項(xiàng)目,名字隨意。
            第二步:在WebContent目錄下新建js和js-test兩個(gè)目錄。js目錄用來(lái)放你的js源代碼,js-test用來(lái)放JsTestDriver的測(cè)試用例代碼。
            第三步:在js目錄下新建一個(gè)myjs.js,內(nèi)容如下:
            myapp = {};
            myapp.Greeter = function() { };
            myapp.Greeter.prototype.greet = function(name) {
            return "Hello " + name + "!";
            };
            在js-test的目錄下新建一個(gè)testMyJS.js,內(nèi)容如下:
            GreeterTest = TestCase("GreeterTest");
            GreeterTest.prototype.testGreet = function() {
            var greeter = new myapp.Greeter();
            assertEquals("Hello World!", greeter.greet("World"));
            };
            以上測(cè)試用例的代碼和Java中的JUnit比較類(lèi)似。這里我們先不管上面代碼的具體含義,先想辦法讓工具跑起來(lái)再說(shuō),我們繼續(xù)。
            第四步:創(chuàng)建JsTestDriver配置文件。
            直接在WebContent目錄下創(chuàng)建一個(gè)jsTestDriver.conf,內(nèi)容如下:
            server: http://localhost:8259
            load:
            - jasmine/*.*
            - jasmine-adapter/JasmineAdapter.js
            - js/*.js
            - js-test/*.js
            注意上面的端口號(hào),必須和前面設(shè)置的端口號(hào)一致。
            這種配置文件的風(fēng)格叫做YAML,JsTestDriver配置文件的完整說(shuō)明
            第五步:開(kāi)始運(yùn)行。
            點(diǎn)擊Eclipse工具欄中的運(yùn)行按鈕左側(cè)的小三角,選擇Run Configrations,如下圖:
            配置成以下形式:
            第六步:?jiǎn)?dòng)JsTestDriver服務(wù)器
            在前面我們已經(jīng)打開(kāi)了JsTestDriver的控制面板,如下圖:
            在右上角有一個(gè)運(yùn)行按鈕,點(diǎn)擊它啟動(dòng)Server。
            第七步:點(diǎn)亮需要測(cè)試的瀏覽器圖標(biāo),瀏覽器會(huì)自動(dòng)打開(kāi)并跳轉(zhuǎn)到http://127.0.0.1:8259/capture這個(gè)路徑。
            第八步:開(kāi)始運(yùn)行測(cè)試用例。
            第九步:查看結(jié)果。
            如果用例運(yùn)行沒(méi)有問(wèn)題,效果如下:
            如果運(yùn)行失敗,效果如下:
            好了,到這里為止,JsTestDriver就算運(yùn)行成功了。
            每次保存自動(dòng)運(yùn)行測(cè)試代碼
            很多時(shí)候,我們希望每次代碼發(fā)生變更之后,工具能夠自動(dòng)把所有用例全部跑一遍,這樣該多爽啊!
            其實(shí)很簡(jiǎn)單啦,請(qǐng)看下圖:
            但是,設(shè)置了這個(gè)選項(xiàng)之后有一個(gè)缺點(diǎn),如果JsTestDriver的Server沒(méi)有運(yùn)行,每次保存代碼的時(shí)候會(huì)彈出錯(cuò)誤,因?yàn)樗€在嘗試運(yùn)行測(cè)試用例。
            如何與Ant配合
            JsTestDriver是可以在命令行下面運(yùn)行的:
            java -jar JsTestDriver.jar --tests all
            因此,我們可以自己寫(xiě)一個(gè)Ant任務(wù)來(lái)調(diào)用這個(gè)jar,并設(shè)置運(yùn)行參數(shù)。

          posted on 2014-12-03 13:48 順其自然EVO 閱讀(306) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 測(cè)試學(xué)習(xí)專(zhuān)欄

          <2014年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 深泽县| 南溪县| 咸丰县| 赤峰市| 舒兰市| 甘泉县| 怀宁县| 蕲春县| 丹凤县| 通河县| 金湖县| 新野县| 舞阳县| 资兴市| 崇仁县| 崇义县| 扶余县| 汉沽区| 麻栗坡县| 万山特区| 青州市| 大同市| 安康市| 庐江县| 呼图壁县| 巧家县| 平乐县| 大宁县| 新乐市| 巫山县| 基隆市| 蒙阴县| 佛教| 玉山县| 邓州市| 腾冲县| 聂荣县| 民丰县| 托克逊县| 新河县| 公主岭市|