03月 02

一、PHP单元测试工具

测试用例

二、JavaScript单元测试工具 — QUnit

QUnit是jQuery团队开发的JavaScript单元测试工具,使用方便,界面美观。


//安装测试
test( name, expected, test ) //添加一个测试运行
asyncTest( name, expected, test ) //添加异步测试运行
expect( amount ) //预计在一个测试中有几个断言
module( name, [lifecycle] ) //函数指定测试模块和周期。
init( ) //初始化测试

//断言函数
ok( state, [message] )  //判断函数,只能判断true和false。
equals( actual, expected, [message] ) //相等判断
same( actual, expected, [message] ) //相同判断(包含数组、对象等)

//异步测试
start( ) //TestRunner停止后再启动测试
stop( timeout ) //停止TestRunner的等待异步测试运行

建立一个测试页面,引入 qunit.js 和 qunit.css 这两个必需的文件

QUnit example

    测试用例

    //定义测试模块
    module( "测试示例" );
    //定义一个简单的函数,判断参数是不是数字
    function simpleTest(para) {
      if(typeof para == "number") {
        return true;
      }
      else{
        return false;
      }
    }
    //开始单元测试
    test('simpleTest()', function() {
      //列举各种可能的情况,注意使用 ! 保证表达式符合应该的逻辑
      ok(simpleTest(2), '2是一个数字');
      ok(!simpleTest("2"), '"2"不是一个数字');
    });
    
    //定义一个简单的函数,返回数字和2的乘积
      function simpleTest1(para) {
        return para * 2;
      }
      //开始单元测试
      test('simpleTest1()', function() {
        //列举各种可能的情况
        equals(simpleTest1(2), 4, '2 * 2 等于 4');
        equals(simpleTest(2), 3, '2 * 2 等于 3');
      });
    
    //定义一个简单的函数,返回一个数组
      function simpleTest2() {
        return [1, 2];
      }
      //开始单元测试
      test('simpleTest2()', function() {
        //列举各种可能的情况
        equals(simpleTest2(), [1, 2], '函数返回数组[1, 2]');
        equals(simpleTest2(), [1, 1], '函数返回数组[1, 1]');
      });
    
    //异步测试
    module( "异步测试示例" );
    //setTimeout
    test('asynchronous test', function() {
      // 暂停测试
      stop();
    
      setTimeout(function() {
        ok(true, '完成运行');
        //待测试完成后,恢复
        start();
      }, 100)
    })
    //另一种形式
    asyncTest('asynchronous test', function() {
      setTimeout(function() {
        ok(true);
        //待测试完成后,恢复
        start();
      }, 100)
    })
    
    //Ajax测试
    function ajax(successCallback) {
      $.ajax({
        url: 'server.php',
        success: successCallback
      });
    }
    
    test('asynchronous test', function() {
      // 暂停测试
      stop();
    
      ajax(function() {
        // 异步调用判断
      })
    
      setTimeout(function() {
        //异步测试完成后,恢复
        start();
      }, 2000);
    });
    
    文章标签: