`
wwwlgy
  • 浏览: 8075 次
社区版块
存档分类
最新评论

编程技巧共享

 
阅读更多

这个比较伤心前几天在Vanessa的博客中才看到,原来已经有jsUnit了。之前不知道,所以自己写了一个测试框架。不过也反映一定的技巧,拿出来给大家看看。

var JSTest = {};
JSTest.name_testContent_div = 'testContent_div';
JSTest.name_resultContent_table = 'resultContent_table';

/**
*一个初始化函数
*主要是在主测试页面中,增加对应的测试HTML对象
*/
JSTest.init = function(){
//在body上创建两个控件

//首先是div控件,用于容纳测试的专用控件
var divObj = document.createElement('div');
divObj.setAttribute('id',JSTest.name_testContent_div);//类型
document.body.appendChild(divObj);

//创建table
var tableObj = document.createElement('table');
tableObj.setAttribute('border','1');
document.body.appendChild(tableObj);

//IE独有的,必须有tbody才能显示
var tabodyObj = document.createElement('tbody');
tabodyObj.setAttribute('id',JSTest.name_resultContent_table);//类型
tableObj.appendChild(tabodyObj);

}
/**
*添加测试结果到页面上
*/
JSTest.appendResult = function (name,result,isSucc){
var tableObj = document.getElementById(JSTest.name_resultContent_table);
var trObj = document.createElement('tr');
if(isSucc != null && !isSucc){
trObj.setAttribute('bgColor','#ff0000');
}

var tdObj_name = document.createElement('td');
tdObj_name.innerHTML = name;

var tdObj_result = document.createElement('td');
//如果成功,结果处变成绿色
if (isSucc==null || isSucc){
result = '<font color="#00ff00">'+result + '</font>';
}
tdObj_result.innerHTML = result;

tableObj.appendChild(trObj);
trObj.appendChild(tdObj_name);
trObj.appendChild(tdObj_result);

}
//记录当时正在测试的测试对象信息
JSTest.currentTest = null;
JSTest.currentTestResult = true;

JSTest.assertEquals = function(p1,p2){
if(!JSTest.currentTestResult){
//如果已经错误,那么跳过,不用再测试了
return;
}
var result = null;
var isSucc = p1 == p2;
if (!isSucc){
result = 'expect ' + p1 + ' but ' + p2 + ' is found!';
JSTest.appendResult(JSTest.currentTest,result,isSucc);
//记录当前失败状态
JSTest.currentTestResult = false;
return;
}
}

JSTest.testObj = new Array();
JSTest.addTestObj = function(testObjStr){
JSTest.testObj[JSTest.testObj.length] = testObjStr;
}

JSTest.runTest = function(){
JSTest.init();
for(var i=0;i<JSTest.testObj.length;i++){
var objStr = JSTest.testObj[i];
eval('var obj = ' + objStr);
for(pp in obj){
//获取所有以test打头
if (/test/.*/i.test(pp) && typeof(obj[pp])=='function'){
//这个是目标程序了,将名称记录下来
JSTest.currentTest = objStr + '.' + pp;
//运行里面的函数,测试函数
obj[pp]();
//一个函数测试结束,如果是全部成功,那么给出一个总体结果
if(JSTest.currentTestResult){
JSTest.appendResult(JSTest.currentTest,'ok',true);
}
}
//标志位复位
JSTest.currentTestResult = true;

}

}
}

使用很简单如:

var mainlogictest = {};

mainlogictest.TestSelectFirsPage = function(){
//加入cookies
Cookies.add('account','abc',0);
var result = mainlogic.SelectFirstPage();
JSTest.assertEquals('user/UserViewPage.html',result);
//检查登录状态
JSTest.assertEquals(LoginStatusConst.CACHELOGIN,mainlogic.mainData['main.userStatusInfo']['status']);
JSTest.assertEquals('abc',mainlogic.mainData['main.userStatusInfo']['account']);
//删除cookies
Cookies.remove('account');
result = mainlogic.SelectFirstPage();
JSTest.assertEquals('page/ViewPage.html',result);
}

JSTest.addTestObj('mainlogictest');

而对应的测试html更简单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="../../../script/globalConst.js"></script>
<script type="text/javascript" src="../../../script/globalScript.js"></script>
<script type="text/javascript" src="../../../control/script/maincontrol.js"></script>
<script type="text/javascript" src="../../../control/script/mainlogic.js"></script>
<script type="text/javascript" src="../../JSTest.js"></script>
<script type="text/javascript" src="mainlogic.test.js"></script>


</head>

<body id='objjj' onload='JSTest.runTest();'>
</body>
</html>

其实这个函数没有写完,因为还有另外一个方向就是要模拟js里面用到html的obj。这个框架是留出来了,但是还没有写呢。

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    基于Linux系统分析计算机C语言编程技巧.pdf

    "基于Linux系统分析计算机C语言编程技巧.pdf" 本文主要介绍了基于Linux系统的C语言编程技巧,旨在帮助编程人员更好地掌握Linux系统和C语言编程的结合应用。文章首先介绍了Linux系统的概述,包括其历史、特点和应用...

    Delphi编程技巧.rar

    在Delphi与C 之间实现函数与对象共享 编 译 错 误 信 息 DELPHI AND THE INTERNET by Charlie Calvert [1] DELPHI AND THE INTERNET by Charlie Calvert [2] Delphi之快速设计(程序设计篇) Delphi之快速...

    ActiveX编程技术与技巧

    ActiveX编程技术与技巧,系列开发教程,备用共享

    java编程小技巧共享

    与前面重复与前面重复与前面重复与前面重复

    试论Linux系统下计算机C语言的编程技巧.pdf

    "试论Linux系统下计算机C语言的编程技巧.pdf" 本文探讨了Linux系统下计算机C语言的编程技巧,旨在提高计算机C语言编程的效率和质量。通过分析Linux系统和计算机C语言的特点,对Linux系统下计算机C语言的编程技巧...

    C++ Builder_5 编程实例与技巧(源代码)

    (2) 编程技巧丰富作者将自己在开发程序过程中总结、收集的经验和教训、一些读者在编程过程中遇到的问题等融合在本书中,并且将这些编程技巧尽量独立,便于读者快速查找。 (3) 内容广泛,兼容性强本书几乎涉及了C++...

    TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录

    说明--TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录 下载链接放在文档中 《TCP/IP高效编程:改善网络程序的44个技巧》是TCP/IP 领域历久弥新的经典著作,网络编程人员必备,对TCP/IP 网络编程中存在...

    单片机应用编程技巧(实验应用技巧)

    实用单片机应用技巧,适合大中专院校,多年编程经验总结而成,如今面向大众共享。谢谢大家的支持!

    3D游戏编程大师技巧.pdf

    3D游戏编程大师技巧 ... by func ... 10天20小时前 ,573 次点击 Tags: 3D 游戏开发 游戏编程 图形学 数学 &lt;br&gt;作者: 拉莫泽 译者: 李祥瑞 陈武 语言: 中文 &lt;br&gt;本资源为极其珍贵的《3D游戏编程大师...

    C 语言编程技巧程序集.rar

    C 语言编程技巧程序集 网上收集,个人感觉有点用,拿来共享下

    3D游戏编程大师技巧(压缩2/2)

    本书是《Windows游戏编程大师技巧》的续作。要注意的是本书并不是一本讲解D3D,或其它3D API的书籍,而是通过亲手编写一份软渲染3D库的方式,来讲解3D图形学的知识,和3D图形API的原理。 这本书在市面上已绝版,也...

    3D游戏编程大师技巧(压缩1/2)

    本书是游戏编程畅销书作者André LaMothe的扛鼎之作,从游戏编程和软件引擎的角度深入探讨了3D图形学的各个重要主题。...幸运的是现在已经有人将中文版本扫描成PDF,共享出来,这里就是一份转发档。

    Java编程技巧:TP312JA W026.iso

    Java编程技巧:TP312JA W026.iso 随书光盘,欢迎大家下载 大家共享

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 &lt;br&gt;1.1 Visual Studio开发环境安装与配置 2 &lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2 &lt;br&gt;0002 配置合适的Visual Studio 2005...

    精彩编程与编程技巧-软件工程篇-受限制的共享软件Shareware...

    软件工程篇-受限制的共享软件Shareware

    C++ Builder 5 编程实例与技巧

    (2) 编程技巧丰富作者将自己在开发程序过程中总结、收集的经验和教训、一些读者在编程过程中遇到的问题等融合在本书中,并且将这些编程技巧尽量独立,便于读者快速查找。 (3) 内容广泛,兼容性强本书几乎涉及了C++...

    3D游戏编程大师技巧

    本书是游戏编程畅销书作者André LaMothe的扛鼎之作,从游戏编程和软件引擎的角度深入探讨了3D图形学的各个重要主题。...幸运的是现在已经有人将中文版本扫描成PDF,共享出来,这里就是一份转发档。

    VISUAL C++MFC扩展编程实例

    本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍...

    Visual C#2005编程技巧大全

    由于上传空间的限制,尽量将书中很实用的代码共享出来了,保证有收获

    095_《Delphi5高级编程丛书之一:IDE与面向对象编程》(5/5)

    本书全面深入地介绍了Delphi 5的集成开发环境、基本编程技巧、项目管理、调试器、Object Pascal语言、动态链接库、与C++共享代码、面向对象编程、VCL的结构、Open Tools API、编写自己的元件和包等内容。Delphi 5是...

Global site tag (gtag.js) - Google Analytics