下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

web前端:JavaScript重构之JavaScript的测试

作者:CSDN     来源: https://kb.cnblogs.com/page/104236/点击数:2507发布时间: 2020-12-10 14:25:27

标签: 编程语言视频JavaScript视频课程java课程

Web开发

  单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

  摘要:进行Javascript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。

  进行JavaScript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。

  JsUnit(http://sourceforge.net/projects/jsunit/,http://www.jsunit.net/)

  JsUnit是一个独立的JavaScript单元测试框架,和JUnit差不多,没有上手难度,包括传统的setUp和tearDown,提供的assert方法也和JUnit类似,多了assertNaN和assertUndefined等等JavaScript特有的方法。测试页面必须在head里面引入jsUnitCore.js这个js文件。

  测试套件的支持:提供了addTestPage和addTestSuite;

  测试日志的支持:包括warn、info和debug三种日志级别,前端编码不似后台代码,正式代码中不宜使用过多log,再说log也只有FF下才支持,现在好了,在测试代码里尽情打吧。

  千言万语不及一个例子:

  scriptlanguage="javascript"src="jsUnitCore.js"/script

  scriptlanguage="javascript"src="play.js"/script//模块JS

  functiontestWithMainProcess(){

  assertEquals("Webplayurl","##http://...##",webOnlinePlay());

  }

  项目的代码里到处是Ajax调用,要做单元测试,看来打桩是不可避免了。Mock类的工具有许多,比如适合jQuery的QMock:

  varmockJquery=newMock();

  mockJquery

  .expects(1)

  .method('ajax')

  .withArguments({

  url:'http://xxx,

  success:Function,

  dataType:"jsonp"

  })

  .callFunctionWith({feed:{entry:"dataresponse"}});

  这个桩正是mock了一个假的ajaxjason返回:[feed:[entry:"dataresponse"]],看看,使用就和以前接触过的EasyMock差不多嘛。

  对于JavaScript测试框架感兴趣的同学还可以了解一些其他的测试框架,例如JSpec。

  单元测试代码建议就放在模块的包内:test.html,即便理想状况下,模块单独发布时,也是伴随着测试用例的可靠的前端代码。

  从哪些JavaScript代码开始做?

  1、函数式的代码。这样的代码保证独立性好,也不需要打什么桩,测试成本低。

  2、复杂的逻辑。

  是否尝试TDD?不建议在我们团队内部使用,前端TDD需要更高的技巧,对人的因素要求更高。如果有一天,后台Java代码的TDD做好了,那么换成JavaScript的代码,没有本质区别。

  如果效果得当,为什么不能把JavaScript的UT集成到ICP-CI上作为持续集成的一部分呢?

  在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中,要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。

赞(10)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程