博客
关于我
JavaScript单元测试框架JsUnit基本介绍和使用
阅读量:433 次
发布时间:2019-03-06

本文共 2710 字,大约阅读时间需要 9 分钟。

 

JavaScript单元测试框架JsUnit基本介绍和使用

 

XUnit framework

  XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests).

  每一个语言都有一个用于单元测试的XUnit框架,比如Java有JUnit, C++有CppUnit, PHP有PHPUnit, Oracle SQL有UTPL/SQL.

 

JsUnit

  JsUnit的官网:

  JsUnit遵循XUnit的一些惯例:

  单元测试在JsUnit中叫做Test Functions.

  Test Functions所在的HTML页面叫做Test Page.

  一个Test Page是一个包含jsUnitCore.js的HTML页面. jsUnitCore.js提供了一些断言函数, 比如assertEquals(comment, arg1, arg2).

  JsUnit支持setUp()tearDown().

  Test Suite Page声明了一个suite()函数,返回一个JsUnitTestSuite, 用来运行含多个测试的套件.

  JsUnit的testRunner.html页运行Test Pages.

  TestRunner页面可以运行在一个文件服务器或者web服务器上.

 

JUnit和JsUnit

 

 

JavaScript编码规范

  由于JavaScript没有访问修饰符,所以通常在JavaScript中,不希望外界访问的成员和方法名以下划线开始.

  这是一种编码规范,不是语言的规定,虽然外界仍然可以访问但是不推荐.

  JsUnit测试函数要遵循的规则与JUnit3.8类似,比如说测试函数名以test开头等.

 

JsUnit基本使用实例

  待测试的源代码:test1.js

function add(num1, num2)  {    return num1 + num2;  }  function subtract(num1, num2)  {    return num1 - num2;  }  function multiply(num1, num2)  {    return num1 * num2;  }  function addNumbers()  {    var v1 = document.getElementById("value1").value;    var v2 = document.getElementById("value2").value;    v1 = parseInt(v1);    v2 = parseInt(v2);    var v3 = v1 + v2;    document.getElementById("value3").value = v3;  }

 

  测试页面:test1.html

    New Document   

 

   使用JsUnit提供的测试运行器: testRunner.html, 加载测试页面,即可运行相关测试,并报告结果.

 

setUp()和tearDown()

  setUp()在每一个测试方法运行之前运行;

  tearDown()在每一个测试方法运行之后运行.

  对于JsUnit来说, 其setUp()和tearDown()方法与JUnit的运行原理是不同的.

  JUnit中的setUp()和tearDown()之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中;

  而JsUnit的各个测试函数是运行在同一个测试页面中,因此同一个页面中setUp()和tearDown()运行多次(每个测试函数之前和之后),会针对同一个变量进行操作.

 

setUpPage()

  setUpPage()在测试页面加载时执行,每次运行只执行一次.

  这个方法的末尾必须加上:

setUpPageStatus = "complete";

  表示setUpPage()执行完成,否则会提示setUpPage not completed, 从而无法执行测试用例.

 

测试套件Suite

  JsUnitTestSuite定义在jsUnitCore.js中, JsUnitTestSuite代表多个JsUnit测试页面的套件,测试页面和测试套件都可以被加在套件中,即套件是可嵌套的.(组合模式).

  JsUnitTestSuite的定义(见jsUnitCore.js):

/** * @class * A JsUnitTestSuite represents a suite of JsUnit Test Pages.  Test Pages and Test Suites can be added to a * JsUnitTestSuite * @constructor */function JsUnitTestSuite() {    /**     * Declares that this object is a JsUnitTestSuite     */    this.isJsUnitTestSuite = true;    /**     * @private     */    this._testPages = Array();    /**     * @private     */    this._pageIndex = 0;    for (var i = 0; i < arguments.length; i++) {        if (arguments[i]._testPages) {            this.addTestSuite(arguments[i]);        } else {            this.addTestPage(arguments[i]);        }    }}

 

测试套件的使用例子1: test2.html

    New Document   

 

测试套件的使用例子2: test3.html

    New Document   

 

参考资料

  圣思园张龙老师Java Web培训视频教程: 60-62.

  JsUnit官网: 

 

转载地址:http://asqyz.baihongyu.com/

你可能感兴趣的文章
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
趣谈win10常用快捷键
查看>>
IDEA出现问题:Received fatal alert: protocol_version 解决方案
查看>>
Airtest自动化测试 Docs airtest.core.android package
查看>>
11.2.6 时间值的小数秒
查看>>
Redis源码分析(七)--- zipmap压缩图
查看>>
Oracle 11G环境配置
查看>>
【Python】(十二)IO 文件处理
查看>>
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
查看>>
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
查看>>
C语言的数值溢出问题(上)
查看>>
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
查看>>
android:使用audiotrack 类播放wav文件
查看>>
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
查看>>
SLAM学习笔记-求解视觉SLAM问题
查看>>
程序员应该知道的97件事
查看>>
shell编程(六)语言编码规范之(变量)
查看>>
vimscript学习笔记(二)预备知识
查看>>
Android数据库
查看>>
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
查看>>