WEB开发网
开发学院网页设计JavaScript 使用JsUnit和JSMock的JavaScript测试驱动开发 阅读

使用JsUnit和JSMock的JavaScript测试驱动开发

 2010-09-14 13:44:54 来源:WEB开发网   
核心提示: JsUnit与其它xUnit框架有很多相似之处,正如你期望的那样,使用JsUnit和JSMock的JavaScript测试驱动开发(3),test runner加载测试页面,调用每个测试函数,还有一个三等(===)操作符,比如,每个测试函数的调用被夹在setUp和tearDown调用之间,

JsUnit与其它xUnit框架有很多相似之处。正如你期望的那样,test runner加载测试页面,调用每个测试函数。每个测试函数的调用被夹在setUp和tearDown调用之间。setUp函数给测试者提供了一个机会, 可以选择在此构造测试夹具(test fixture)。测试夹具用以给页面中所有的测试准备状态。tearDown函数则给测试者提供了另外一个机会,可以去清除或者重置测试夹具。

然而,与其他的xUnit框架相比,JsUnit在测试生命周期方面稍有不同。每个测试页面被加载到独立的窗口中,以防止应用程序代码通过开放类覆盖测试框架代码。在每个被加载的窗口中,所有的单元测试函数都会被调用到。页面不会为每个测试函数重新加载。从另一方面来说,在JUnit中,测试页面等同于一个测试用例,test runner会给每个测试方法生成一个单独的测试用例的实例。换言之,

JsUnit加载有N个测试函数的测试页面,只需要1次

JUnit创建有N个测试方法的测试用例,需要N次

JavaScript开发者因此更容易陷入“一招不慎,满盘皆输”的境地,因为对测试页面状态的改变会影响后续测试的结果。而Java开发者在改变 测试用例对象的状态时则不会遇到这种危险。JsUnit为什么这样做呢,而不是对每个测试,简单地重新加载一次测试页面?这是因为在测试套件中给每个测试 函数重新创建DOM会有性能消耗。值得庆幸的是,JavaScript开发者不必过多关心全局状态变化带来的负面影响。在诸如JVM和CLR的程序平台 上,修改静态变量会影响整个测试套件中所有后续的测试,而不仅仅是同一个测试用例的测试。

jsUnitCore.js脚本必须嵌入到所有的 测试页面中。这个重要的文件位于JsUnit下载文件解压之后的app目录中。它包含一组断言函数,与其他xUnit框架的行为多少有些相同。一个细微的 区别源于JavaScript有两个等于符号。一个是相等(==)操作符,还有一个三等(===)操作符。比如,下面的第一个表达式是true,第二个是 false:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 JsUnit JSMock

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接