
去年一整年关于前端开发工具,明河写了不少教程,可以看《web前端开发七武器》,里面有文章列表。
今天介绍著名的IDE—idea11的技巧:如何集成JsTestDriver对js单元测试代码进行自动化测试,说白了,就是如何一键批量跑单元测试js。
什么是JsTestDriver
JsTestDriver官网:http://code.google.com/p/js-test-driver/,经常被墙上不了-_-!
首先,JsTestDriver是一个TDD式js单元测试框架,作用类似明河和苏河之前介绍过的jasmine;
其次,JsTestDriver是一个单元测试自动化工具,它并不是非得使用自家的测试框架,使用第三方的测试框架也是可以的,比如jasmine、qunit、junit的等。本文主要使用jasmine(淘宝前端基本上都是使用这个单元测试框架,很易用,也有JsTestDriver的适配器)。
阅读推荐:
- 高效JavaScript单元测试
- Test-Driven JavaScript Development in Practice
- Automated Javascript unit testing with JsTestDriver
- Unit Testing 101: Are You Testing Your JavaScript?
安装JsTestDriver插件
进入idea的“setter”界面,找到“plugins”:

这是常规手段,插件服务器不给力,经常连不上,这时候请到idea的插件页下载,传送门在此。
下载下来后,解压到你的idea配置目录下的plugins目录下,明河机子上是“c:\Users\Administrator\.IntelliJIdea11\config\plugins”。重启下idea,不出意外的话将会多出
jsTestDriver的界面,比如下图:

运行个jsTestDriver的示例工程
下载greeter-sample.zip。解压出来后,使用idea打开这个工程。
如果第一次打开GreeterTest.js,TestCase方法的错误提示,移动焦点到代码上,使用Alt+Enter/Option+Enter,选择“Add JsTestDriver assertion framework support”。在js类库中会增加JsTestDriver语法提示等。

运行JsTestDriver服务器
开始run测试集
选择“greeter.jstd”,会有个run选项。

更详细的教程可以看:http://blog.jetbrains.com/webide/2011/10/javascript-unit-testing-support/。
接下来明河关键要讲下如何适配jasmine。
使用JsTestDriver运行jasmine的测试代码
通过jasmine-jstd-adapter来适配JsTestDriver
请先到jasmine-jstd-adapter首页下载个JasmineAdapter.js。
在工程根目录创建jstestdriver.conf文件
文件的内容类似如下:
- server: http://localhost:9876
- load:
- - tool/jasmine/jasmine.js
- - tool/jasmine/JasmineAdapter.js
- - tool/jasmine/jasmine-html.js
- test:
- - spec/*.js
jstestdriver的配置文件,采用YAML的格式,
- server:服务器路径
- load:依赖脚本
- test:测试脚本
导入JsTestDriver配置
右击工程顶点目录,可以找到“creat XX”的选项(选项图标是JsTestDriver的logo),弹出一个配置确认页,直接确定就好,然后在idea的上方会出现如下图界面:
![]()
点击绿色图标就开始跑jasmine测试!!!

解决JsTestDriver测试ajax异步过程问题
假设你的ajax请求的路径指向fixtures下的文件:

直接运行测试代码会报文件找不到的错误。
这并不是JsTestDriver的bug,而是你需要在jstestdriver.conf中配置加载静态文件。
比如增加下面的配置:
- serve:
- - spec/fixtures/*.html
留意这个参数是serve不是配置服务器的server。
上面的配置,会加载spec/fixtures/下的所有html文件,留意是对应的路劲是在test目录下,也就是说路径应该是“http://localhost:9876/test/spec/fixtures/upload-success.html”。
解决缺少运行页面不方便插入html片段问题
如果你是kissy的使用者,那么可以使用明河写的jasmine-kissy,首页有详细的使用说明,下一篇教程也会说明。
如果你是jquery的使用者,请使用jasmine-jquery。




JsTestDriver还是不错的
请问一下啊,如果我在某篇文章下,提了一个“评论”,“时隔多年”后,我如何才能找到自己写的这篇“评论”呢?首页那个最新评论的版块,如果自己的这条被埋没了以后,是不是只能到有关文章底下才能找到自己的那条评论呢?这样是不是有一点麻烦了。。。
这个不错,准备尝试下