使用JsTestDriver插件—idea使用技巧

发布于,归属于前端开发工具3个座位已被强势霸占! 共有227人围观    


去年一整年关于前端开发工具,明河写了不少教程,可以看《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的适配器)。
阅读推荐:

安装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服务器


复制url到你想要运行单元测试的浏览器上。

开始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文件

文件的内容类似如下:

  1. server: http://localhost:9876
  2. load:
  3.   - tool/jasmine/jasmine.js
  4.   - tool/jasmine/JasmineAdapter.js
  5.   - tool/jasmine/jasmine-html.js
  6. test:
  7. - spec/*.js

jstestdriver的配置文件,采用YAML的格式,

  • server:服务器路径
  • load:依赖脚本
  • test:测试脚本

load依赖脚本,假设你的工程目录结构跟明河类似:

导入JsTestDriver配置

右击工程顶点目录,可以找到“creat XX”的选项(选项图标是JsTestDriver的logo),弹出一个配置确认页,直接确定就好,然后在idea的上方会出现如下图界面:

点击绿色图标就开始跑jasmine测试!!!

解决JsTestDriver测试ajax异步过程问题

假设你的ajax请求的路径指向fixtures下的文件:

直接运行测试代码会报文件找不到的错误。
这并不是JsTestDriver的bug,而是你需要在jstestdriver.conf中配置加载静态文件。
比如增加下面的配置:

  1. serve:
  2. - 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

(如果您喜欢这篇教程,可以通过支付宝打赏我们1元哦,拜谢!)

感谢阅读这篇文章,如果你遇到了问题,可以在文章底部留言,你可以通过以下方式联络到明河: 1、进入我的微博首页跟随我 2、我的email:minghe36@126.com

辛勤码教程中...求订阅...O(∩_∩)O

跟作者说两句

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-? :) :( :!: 8-O 8)

3个座位已被强势霸占!

  1. xthsky

    JsTestDriver还是不错的

  2. renrenqian

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

  3. 苏河

    这个不错,准备尝试下 :mrgreen: