这个比较伤心前几天在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。这个框架是留出来了,但是还没有写呢。
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
"C语言最新编程技巧200例"是针对这一经典语言的学习资源,旨在帮助开发者掌握更多的编程技巧,提高代码编写效率和质量。这份资料可能是书籍的形式,包括了200个实际编程示例,涵盖了C语言的各个方面。 1. **基本...
《VC编程技巧280例》是一本涵盖了广泛VC++编程领域的实用教程,旨在帮助开发者提升在数据库操作、动态链接库应用、控件设计、文体处理、窗体管理、图像图像处理、多媒体技术和网络编程等多个方面的技能。这本书通过...
"基于Linux系统分析计算机C语言编程技巧.pdf" 本文主要介绍了基于Linux系统的C语言编程技巧,旨在帮助编程人员更好地掌握Linux系统和C语言编程的结合应用。文章首先介绍了Linux系统的概述,包括其历史、特点和应用...
"C语言编程技巧程序集"很可能是包含了多个关于C语言编程实践、技巧和示例的PDF文档集合。 在C语言编程中,以下是一些关键知识点: 1. **基本语法**:C语言的基础包括变量定义、数据类型(如int, char, float等)、...
本资料主要探讨的是该系列PLC的编程技巧及实际应用案例,旨在帮助用户深入理解和熟练掌握其编程方法。 首先,我们要了解S7-200SMART PLC的基本结构和工作原理。它基于模块化设计,包括中央处理器(CPU)、输入/输出(I...
下面将详细探讨这些"java编程小技巧共享"中的关键知识点。 1. **注释规范**:良好的注释是代码可读性的保障。使用Javadoc为类、方法添加文档注释,让其他开发者能快速理解代码功能。对于关键代码块,简洁明了的单行...
### EMC单片机编程技巧详解 #### 一、引言 EMC单片机作为一种广泛应用的微控制器,在工业控制、消费电子等领域发挥着重要作用。针对EMC单片机的编程,掌握一定的技巧不仅可以提高开发效率,还能显著提升软件的质量...
在编程领域,掌握一些常用的技巧可以极大地提升开发效率和代码质量。这些技巧涵盖了多个方面,如用户...在"常用编程技巧.ppt"这个文件中,可能包含了关于这些主题的详细讲解和实例,建议深入学习以增强你的编程能力。
### 精彩编程与编程技巧—Visual Basic 的数据库编程 #### 一、引言 在计算机技术领域中,数据库编程是一项重要的技能,它能够帮助开发者有效地管理数据、提高应用程序的功能性和灵活性。Visual Basic(简称VB)...
【LabVIEW编程技巧详解】 LabVIEW,全称Laboratory Virtual Instrument Engineering Workbench,是一种图形化编程环境,广泛应用于科学实验、工程计算以及自动化控制等领域。它以数据流为基础,通过图标和连线进行...
全国电子设计大赛中的编程技巧主要关注的是如何有效地利用FPGA芯片资源,提高程序效率和电路性能。以下是对这些技巧的详细解析: 1. **程序优化**: - **限制向量位数和变量范围**:避免不必要的资源浪费,合理...
电脑编程技巧100例 本资源共享了作者在长期编程开发过程中的经验和心得。作者认为,书上的知识和实践之间存在很大差异,不适合程序员掌握新编程工具。作者建议,在学习新工具时,不要过于依赖参考书,而应该尽快...
《C++编程思想》这本书是C++编程领域的一部经典之作,它深入浅出地介绍了C++语言的设计理念和编程技巧。C++是一种强大的、通用的面向对象编程语言,它结合了过程化编程的效率和面向对象编程的灵活性。本篇文章将主要...
本资源“DELPHI编程技巧集锦”汇集了众多Delphi编程者的经验与智慧,旨在帮助Delphi初学者及有经验的开发者提升技能,解决实际问题。下面,我们将深入探讨其中可能涵盖的一些关键知识点。 1. **对象与类**:Delphi...
"试论Linux系统下计算机C语言的编程技巧.pdf" 本文探讨了Linux系统下计算机C语言的编程技巧,旨在提高计算机C语言编程的效率和质量。通过分析Linux系统和计算机C语言的特点,对Linux系统下计算机C语言的编程技巧...
"C语言编程技巧集锦"PDF文档显然是为了帮助开发者深入理解和掌握C语言的各种技巧和最佳实践。 在C语言编程中,以下几个方面是至关重要的知识点: 1. **基本语法**:C语言的基础包括变量定义、数据类型(如int, ...
(2) 编程技巧丰富作者将自己在开发程序过程中总结、收集的经验和教训、一些读者在编程过程中遇到的问题等融合在本书中,并且将这些编程技巧尽量独立,便于读者快速查找。 (3) 内容广泛,兼容性强本书几乎涉及了C++...