由于测试中兼容性的考虑不足,导致JS在一定内核浏览器下冲突无效,严重的外网事故。

  虽然现在很多公司注重了代码的Xunit测试,但对于展现层的Javascript,JQUERY等代码的测试仍然不是很多,这里将对JS方面的测试及兼容性测试,性能测试留下点Memory。

  JS的Xunit框架现在有很多,jsunit,Qunit,YUITest。

  考量了我们选用Qunit+Qmock的框架进行JS单元测试自动化。

  Qunit的特点:

  支持异步的ajax测试

  支持区分module的测试

  支持测试时间输出

  Qmock的加入更好的配合了Qunit的测试

  Qunit的判断类:

  ok(state, message) – 布尔型断言,message是专门显示在QUnit界面上,用来区分不同的断言的

  equals(actual, expected, message) – 相等断言,actual和expected的值相等时才能通过。

  same(actual, expected, message) – 完全相等断言,和equals的区别在于它会比较子元素,对于数组和一些自定义对象的比较十分有用。

  raises( block, expected, message ) – 判断错误返回

  Qunit的实现类:

  expect(amount) – 指定某个函数中会有多少个断言,通常写在测试函数开头。

  module(name) – 模块是测试函数的集合,使用该函数可以在UI中将测试函数按模块归类。

  asyncTest( name, expected, test ) – 异步ajax测试使用

  异步与Ajax

  对于异步程序的测试,如setTimeout、setInterval、Ajax等情况,按照上面的方法,在异步调用执行之前,测试已完成并输出了结果。

  这时,配合使用QUnit提供的两个函数:stop( [timeout] ) 和 start(),也可以轻松搞定。

  //Ajax测试

  function ajax(successCallback) {

  $.ajax({

  url: ‘XXXX.php’,

  success: successCallback

  });

  }

  test(‘asynchronous test’, function() {

  // 暂停测试

  stop();

  ajax(function() {

  // 异步调用判断

  })

  setTimeout(function() {

  //异步测试完成后,恢复

  start();

  }, 2000);

  })

  现在WEB2.0JS测试越来越重要了,在即将来临的webGL时代尤为重要,得恶补JS了