站内留言 会员登陆 会员注册 站长推荐: 文字广告
站内搜索: 您的位置素材在线 > 互联网络 > 技术学院 > 网页设计 > Dhtml > 新闻内容

6.2 分析JsUnit(二)

2008-8-22 13:59:00  来源:顶酷手机网  作者:本站整理 【 查看评论

跟踪和日志

编写JavaScript时最困难的一部分就是跟踪代码。因为JavaScript不同于其他许多语言,没有一个得力的日志库来帮助你,因此无法以一种一致的方式打印语句,相反,你必须使用alert()。当然,alert()也不是不行,但它肯定不是最理想的方法。为了查找一个问题,要“沿路”布下一大堆alert()函数,这是很讨厌的,而且一旦修正了bug,还要再把这一大堆alert()代码统统去掉。当然,等你删除掉所有额外的alert()函数后,没准又会出现另一个bug,而且就出现在上一个bug的附近,这就要求你又得把所有alert()函数再加上。你现在应该知道,为什么没有多少人喜欢JavaScript了吧!

为了让JavaScript开发人员的日子更好过,JsUnit支持跟踪!JsUnit包含以下3个函数,任何测试都可以调用(注意,在每个函数中,value参数是可选的):

warn(message, [value])
inform(message, [value])
debug(message, [value])

JsUnit支持3个跟踪级别:warn(警告)、info(信息)和debug(调试)。运行测试时,要指定你想在哪个级别上输出。这3个级别按以下顺序层叠:warn, info, debug。这说明,如果运行测试时选择debug,就会看到warn()、inform()或debug()函数发出的所有消息。如果选择warn,则只会显示由warn()函数发出的消息,选择info则会显示由warn()和inform()发出的消息。默认值为no tracing(不跟踪)。下面向这个简单例子增加一些跟踪函数[7],来看看会发生什么(见代码清单6-9)。

代码清单6-9 向一个测试增加跟踪函数

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>A Simple Test Page with Tracing</title>
<script language="JavaScript" src="jsunit/app/jsUnitCore.js"></script>
<script language="JavaScript">
function addTwoNumbers(value1, value2) {
warn("this is a warning message");
warn("this is a warning message with a value", value1);
return value1 + value2;
}
function testValidArgs() {
inform("this is an inform message");
assertEquals("2 + 2 is 4", 4, addTwoNumbers(2, 2));
}
function testWithNegativeNumbers() {
debug("this is a debug message");
assertEquals("negative numbers: -2 + -2 is -4", -4,
addTwoNumbers(-2, -2));
}
</script>
</head>
<body>
This is a simple test page for addTwoNumbers(value1, value2) with tracing.
</body>
</html>

要看跟踪函数得到的输出,需要在测试运行工具中启用跟踪,并选择适当的跟踪级别。如果选择debug,可以看到来自这3个函数的全部消息,“Close Old Trace Window on New Run”(下一次运行测试时关闭上一个跟踪窗口)复选框的作用是,如果你愿意,可以保留以前运行测试的跟踪结果(见图6-10)。

Ajax基础教程(6)- 6.2 分析JsUnit

图6-10 设置跟踪级别

这一回不再是在测试运行工具中千篇一律地显示一个绿条了。图6-11显示了跟踪函数的输出。

Ajax基础教程(6)- 6.2 分析JsUnit

图6-11 跟踪输出

6.2.3 运行测试

你已经写了一些测试,下面需要运行它们,为此可以使用JsUnit测试运行工具。你已经看到启动测试运行工具的许多例子,不过这是怎么做到的呢?为了访问这个运行工具,要把浏览器指向jsunit文件夹中的testRunner.html文件。这个测试运行工具如图6-12所示。

这个测试运行工具非常类似于JUnit中常用的图形化运行工具。(不过,有意思的是,我们期盼已久的JUnit 4并没有包括图形测试运行工具,而且以后也不会增加。)要运行一个测试,可以点击Choose File(选择文件),来选择要运行的文件。不出所料,在测试运行工具发现失败之前,进度条一直是绿的,如图6-13所示。Runs字段指示测试函数的总数,还可能报告错误或失败。

Ajax基础教程(6)- 6.2 分析JsUnit

图6-12 JsUnit测试运行工具

Ajax基础教程(6)- 6.2 分析JsUnit

图6-13 成功运行的JsUnit测试运行工具

错误(error)来自浏览器,指示测试页出现了某个问题,失败(failure)指示你的某个断言失败。特定的错误或失败会显示在Errors and Failures文本框中。要了解一个错误或失败的更详细的信息,可以双击相应测试函数。或者,选中这个测试函数,再选择Show Selected。如果是失败,就会出现一个警告,显示出期望值和实际值,另外还会显示你在断言中增加的所有消息。如果看到一个错误,相应的消息(可能)会帮助你缩小查找的范围,更快地找到问题所在。

下面再来看展示setUp()和tearDown()函数的例子,对这个例子做一个小小的调整。在addNumbers()函数中故意增加一个错误,试图获取一个不存在的元素,如代码清单6-10所示。

代码清单6-10 故意增加的一个错误

function addNumbers() {
//arg1 doesn't exist!
var val1 = document.getElementById("arg1").value;
var val2 = document.getElementById("value2").value;
return addTwoNumbers(val1, val2);
}

运行这个测试,可以想像到,会得到一个红条!注意Errors and Failures文本框中显示了一个错误(见图6-14)。

Ajax基础教程(6)- 6.2 分析JsUnit

图6-14 JsUnit测试运行工具错误

通过进一步观察,可以看到如图6-15显示的详细信息。由此得知,arg1没有任何属性,你应该查查addNumbers()方法来看发生了什么问题。

Ajax基础教程(6)- 6.2 分析JsUnit

图6-15 错误详细信息

在运行工具中,失败看上去都是一样的(都会得到一个红条),但是详细信息不同。如果你熟悉JUnit,会发现这里的失败信息看上去非常熟悉。下面再回到simpleJS.js文件的测试。假装你希望 2 + 2 等于 5,如代码清单6-11所示,来看看会发生什么。

代码清单6-11 另一个故意的错误

function testValidArgs() {
assertEquals("we really do know that 2 + 2 is 4", 5, addTwoNumbers(2, 2));
}

不出所料,测试运行工具会显示一个红条,但是提供详细信息的警告有所不同,见图6-16。

Ajax基础教程(6)- 6.2 分析JsUnit

图6-16 JsUnit 测试运行工具失败

失败的详细信息很有帮助,如图6-17所示。可以看到你在断言函数中键入的所有消息,会得到期望值和实际值,还会得到一个栈轨迹,显示出哪里出现了失败。

以上基本上介绍了测试运行工具中的所有字段,只有两个字段还没有谈到:Page Load Timeout(页面加载超时)和Setup Page Timeout(建立页面超时)。Page Load Timeout字段是指测试运行工具对于你的测试页有多耐心,如果你的测试页需要的时间比这个框中指定的时间(以秒为单位)长,测试运行工具

[1] [2]  下一页

文字链接广告
(评论内容只代表网友观点,与本站立场无关!)[ 全部评论 ]

网友评论:

    用户名:

    评   分:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

                 (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告服务 - 网站地图 - 下载声明 - 友情链接 -