yzx99

导航

 

测试驱动开发
test-driven development TDD
好处:
提供明确的目标:因为你也是代码的使用者
提供文档:因为有测试代码,因此文档会更多一些
改善设计:因为你也是代码的使用者,测试要想简单,首先是对象要简单,所以你的代码不会太复杂
鼓励重构:不害怕重构,只要测试通过就行
提高速度:增加或修改代码时,不会造成不可估计的错误,从长远来看,它是提高编码速度的
提供反馈:因为你也是代码的使用者
测试是会上瘾的!

 

JsUnit
测试函数不能有任何参数,必须有一个前缀test。测试函数包含在一个测试页中,测试页必须包含jsunitCore.js文件。测试函数也可以放在单独的JavaScript文件中,不过,如果这样做,就需要使用exposeTestFunctionNames()方法,这样JsUnit才能找到测试函数。
实际操作一下:假设我有一个js文件,simple.js
function addTwoNumbers(value1, value2)
{
 return parseInt(value1) + parseInt(value2);
}
我还要再建立一个测试页,simple_t.htm
<html>
<head>
<script language="JavaScript" src="../app/jsUnitCore.js"></script>
<script language="JavaScript" src="simple.js"></script>
<script language="JavaScript">
function testValidArgs()
{
 assertEquals("2 + 2 is 4", 4, addTwoNumbers(2, 2));
}

function testWithNegativeNumbers()
{
 assertEquals("negative numbers: -2 + -2 is -4", -4, addTwoNumbers(-2, -2));
}
</script>
<head>
<body>
 This is a simple test page for addTwoNumbers(value1, value2)
</body>
</html>
如果JsUnit不幸无法自动找到你的测试函数,请在测试页中加入这个函数:
function exposeTestFunctionNames()
{
 var tests = new Array(2);
 tests[0] = "testValidArgs";
 tests[1] = "testWithNegativeNumbers";
 return tests;
}
这就麻烦多了,因为函数名要自己一个个地输入,输错了,测试就出错,提示:
对象不支持此属性或方法

函数setUp是指在执行前所做的事,tearDown是指在执行后所做的事。
function setUp()
{
 document.getElementById("value1").value = "2";
 document.getElementById("value2").value = "2";
}

function testValidArgs()
{
 assertEquals("getElement 2 + 2 = 4", 4, addNumbers());
}

function addNumbers()
{
 var val1 = document.getElementById("value1").value;
 var val2 = document.getElementById("value2").value;
 return addTwoNumbers(val1, val2);
}

function tearDown()
{
 document.getElementById("value1").value="";
 document.getElementById("value2").value="";
}
JsUnit还有其它一些功能,但我要应用后才能理解这些功能要解决的问题。

posted on 2008-08-25 12:43  yzx99  阅读(373)  评论(0编辑  收藏  举报