ikon999原创:JsUnit测试之二

作者:ikon999 发布于:2008年10月08日 11:23

六、 组织测试函数
 一般地,JsUnit会自动发现测试函数,就像JUnit会发现所有测试方法一样。不过,有些操作系统/浏览器不能合作。如果你发现不能如你所愿地发现测试函数,使用exposeTestFunctionNames()方法就能解决这个问题。
 在测试页面里定义exposeTestFunctionNames方法,jsunit运行器在执行时会寻找exposeTestFunctionNames方法,只执行在此方法内指定的方法;


//向JsUnit框架显式暴露测试函数名
function exposeTestFunctionNames(){
 var tests = new Array();

 tests[0] = “testAdd”;
 tests[1] = “testMinus”;
 tests[2] = “testMultiply”;
 tests[3] = “testDivide”;

 return tests;
}
七、  setUpPage函数
此函数会在页面加载后首先执行,并且只执行一次,类似于JUnit4中的@BeforeClass注解
function setUpPage(){
 arg1 = 3;
 arg2 = 6;

//此行代码必须放置在setUpPage的最后,在完成资源加载后告诉JsUnit该函数已执行完毕
 setUpPageStatus = “complete”;
}
八、  测试实例
<script type=”text/javascript”>
function addNumbers(){
 var v1 = document.getElementById(”value1″).value;
 var v2 = document.getElementById(”value2″).value;
 var result = addTwoNumbers(v1, v2); 
 
 return result;
}

function addTwoNumbers(value1, value2){
 return parseInt(value1) + parseInt(value2);
}
function setUp() //类比于JUnit中的setUp
{
 document.getElementById(”value1″).value = 6;
 document.getElementById(”value2″).value = 7;

}

function tearDown() //类比于JUnit中的tearDown
{
 document.getElementById(”value1″).value = “”;
 document.getElementById(”value2″).value = “”;
}

function testAddNumbers(){
 var result = addNumbers();
 assertEquals(13, result);
}
</script>
<BODY>

<form>
<input type=”text” id=”value1″><br>
<input type=”text” id=”value2″><br>
<input type=”text” id=”result”><br>
<input type=”button” value=”Add” onclick=”addNumbers()”>

</BODY>
九、  日志跟踪
? 分3个级别:warn、info和debug
? 测试函数应用
function testAdd()
{
 var result = add(4, 2);
 assertEquals(6, result);
 warn(”result ” , result);
}
? 在testRunner.htmll里有显示日志级别跟踪的选择;
十、 Jsunit的测试套件
测试套件的函数名一定为suite;
function suite()
{
 var testSuite = new top.jsUnitTestSuite();
//增加的测试页面的路径是相对于测试运行器的路径的(testRunner.html),而不是相对于当前的页面
 testSuite.addTestPage(”../test1.html”);
 testSuite.addTestPage(”../test2.html”);
   //套件里还可以在包含套件
 testSuite.addTestSuite(secondSuite ());

 return testSuite;
}
function secondSuite() //需要与suite定义在同一个页面中
{
 var testSuite = new top.jsUnitTestSuite();

 testSuite.addTestPage(”../test1.html”);
 testSuite.addTestPage(”../test2.html”);

 return testSuite;
}

作者:ikon999
来源:北风技术专栏
原文链接:http://column.ibeifeng.com/51564/20081008101.shtml

( 内容完 )

添加收藏到:

您可能还对这些文章感兴趣:

  • Spring集成XFire开发WebService
  • 为什么我们要从现成的游戏引擎学习开始
  • Swing的设计是MVC的典范
  • 版权声明
  • 关于我们
  • 在XFire中使用友好的接口参数名
  • Flex+Lucene+s2sh开发订餐系统开发第六步:后台主界面设计
  • 使用RPM包管理命令的笔记
  • IP及IP段进行访问限制的代码
  • Web服务请求异步化测试
  • 没有评论, 我来评论

    小贴士:评论需要管理员审核后才会显示。请不要发布与国家法律相抵触的言论,北风网将保留追究责任的权利。
    类似“顶”、“沙发”、“支持”之类没有营养的文字,对勤劳贡献的作者来说是令人沮丧的反馈信息。
    请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
    如果您发现自己的评论没有被审核或者不见了,请参考以上三条。

    每周之星

    陈臣陈臣

    七年Java和JEE开发经验,JEE应用设计和高级架构师,拥有Sun的多项Java和J2EE方面的技能认证,多年项目经理、技术部经理的管理经验。拥有全面、扎实的Java和JEE理论知识,丰富的JEE应用开发经验。

    更多作者:

  • Adam
  • ikon999
  • jk1234
  • jk2345
  • libin_8745
  • lifengxing
  • taohuang100
  • xingkong
  • 北风
  • 呆子
  • 子晨
  • 小白
  • 张章
  • 张维亮
  • 陈臣
  • 陶宝哥
  • 风风
  • 最新内容

    推荐内容

    标签

    分类