注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Rhinounit使用  

2013-08-01 20:00:44|  分类: Javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Rhinunit也是一个JS Test Unit Framework,与JsUnit不同的是,它的JS不是跑在浏览器上,而是跑在Rhino上。(Rhino是一个Java实现的JS引擎)

项目主页:

如何写它的Test Unit?
  • include the unit you are testing (IncludingFiles)
  • set up global variables (don't forget to 'var' them or the tests will fail, see GlobalVars)
  • call 'testCases' passing in 'test' as the first variable
  • write a setUp function to mock all your dependencies. JavascriptMocking is easy!
  • write some tests, using assert.that to assert conditions, and assert.mustCall to make sure that functions are called (see APIDescription and especially AssertMustCall) 

1.Including files,你要测试的JS文件,这里是之前写的template.js
路径需相对于build.xml
eval(loadFile("tdd/src/template.js"));

var Template = function (templateStr) {
this.templateStr = templateStr;
this.map = {};
};

Template.prototype.set = function (variable, value) {
this.map[variable] = value;
};

Template.prototype.evaluate = function () {
for (var v in this.map) {
var reg = new RegExp("\\${" + v + "}","g");
this.templateStr = this.templateStr.replace(reg, this.map[v]);
}
return this.templateStr;
};

2.Global Vars,声明全局变量,必须用var声明, 所有测试文件的变量声明,必须加var,要不然测试会失败

3.调用testCases方法,传入test作为第一个参数

4.书写setUp方法

5.书写test function, 使用assert.that, assert.mustCall

6. 写build.xml

7. Run Ant

完整的templateTest.js

eval(loadFile("tdd/src/template.js"));

var temp1;
var temp2;

testCases(test,
function setUp() {
temp1 = new Template("Hello ${name}");
temp2 = new Template("${greeting} ${name}");
},

function testOneVariable() {
var name = "Rhinounit";
temp1.set("name", name);
assert.that(temp1.evaluate(), eq("Hello Rhinounit"));
},

function testTwoVariable() {
var name = "Rhinounit";
var greeting = "Hello";
temp2.set("name", name);
temp2.set("greeting", greeting);
assert.that(temp2.evaluate(), eq("Hello Rhinounit"));
});

添加自己的target在build.xml, 注意dir的路径是相对于build.xml, 我的项目叫tdd

<target name="run-unit-tests">
<rhinounit options="{verbose:true, stackTrace:true}" haltOnFirstFailure="true" rhinoUnitUtilPath="src/rhinoUnitUtil.js">
<fileset dir="test">
<include name="*.js"/>
<exclude name="standard.js"/>
</fileset>
</rhinounit>
<rhinounit options="{verbose:true, stackTrace:true}" ignoredglobalvars="rhinounit" rhinoUnitUtilPath="src/rhinoUnitUtil.js">
<fileset dir="example/test">
<include name="*.js"/>
</fileset>
</rhinounit>
<rhinounit options="{verbose:true, stackTrace:true}" ignoredglobalvars="rhinounit" rhinoUnitUtilPath="src/rhinoUnitUtil.js">
<fileset dir="tdd/test">
<include name="*.js"/>
</fileset>
</rhinounit>

</target>

运行ant run-unit-tests命令 
Rhinounit使用 - 星期五 - 星期五
 
注意,Rhinounit还可以进行jslint检测,详细内容见build.xml

缺点:不跑在实际浏览器上,无法保证JS测试的正确性,毕竟不同浏览器的引擎是不同的。

  评论这张
 
阅读(383)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017