给js写测试已经不是什么稀奇的事情了,最近项目里用了jasmine和JsTestDriver两种js测试框架。JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD风格的开发。当在项目中配置好JsTestDriver以后,如同junit测试java文件一般,JsTestDriver可以直接通过运行js文件来进行单元测试。JsTestDriver框架本身就是JAVA的jar包,需要在本地运行并监听一个端口。JsTestDriver是xUnit测试框架领域的一个比较新的成员,它最初起源于Google。本文将介绍如何搭建一个JsTestDriver测试框架。

首先简单介绍一下JsTestDriver的特点:

优点:

1.可以一次测试多个浏览器,使用方法是在启动服务时可以将多个浏览器的路径作为参数传进去。

2.测试运行得很快,因为不需要将结果添加到DOM中呈现出来,它们能够同时在任意多的浏览器中运行,未修改的文件浏览器会从缓存提取。

3.不需要HTML配件文件,仅仅只需提供一个或多个脚本和测试脚本,测试运行器运行时会创建一个空文件。

4.支持其它测试框架,可以测试其它测试框架写的测试代码,比如有对应的插件可以将QUnit和Jasmine测试代码转换成JsTestDriver的测试代码。

缺点:

不能在浏览器中测试,只能通过自动化工具或控制台运行。生成的结果不够直观。安装使用稍微有点麻烦,依赖于JAVA环境

搭建步奏:

一.编写测试test.js

1.给一个测试js文件写一个TestCase用来声明一个测试对象

2.写setUp,初始化被测对象

3.编写测试函数,js测试驱动程序提供了一个声明,让测试更容易阅读和维护方式向测试添加HTML。把有效的HTML在doc注释和js测试驱动程序将相应的DOM到一个变量,或者将其添加到文档的身体。

HtmlDeclaredInTest = TestCase("HtmlDeclaredInTest");HtmlDeclaredInTest.prototype.setUp = function() {//test utils object contains convenience functionsthis.testUtils = new myapp.Greeter();
};HtmlDeclaredInTest.prototype.testVariableHtml = function() {/*:DOC mainDiv = <div id='main'><div class='text'>Hello word.</div></div> */var child = this.testUtils.findFirstDiv(this.mainDiv);assertEquals("text", child.className);assertEquals("Hello word.", child.innerHTML);
};

二.编写源文件source.js

1.写一个让测试通过的源代码

2.运行测试

myapp = {};myapp.Greeter = function() { };myapp.Greeter.prototype.findFirstDiv = function(element) {var result, child ;for ( i = 0; i < element.childNodes.length; i++) {child = element.childNodes[i];if (child.nodeType == 1 && child.tagName=='DIV')result = child;}return result;
};

三.搭建运行环境

1.在google下载JsTestDriver唯一需要的一个集成jar包——JsTestDriver.jar

2.添加配置文件jsTestDriver.jstd,YAML格式文件,或者默认文件为jsTestDriver.conf与jar包同一目录下。

server: http://localhost:9876

load:- src/*.js- src-test/*.js

3.启动服务器

Java -jar JsTestDriver-1.3.5.jar --port 9876 --browser **/**/firefox.exe

访问 http://localhost:9876/capture

4.运行测试

java -jar JsTestDriver-1.3.5.jar  --tests all --config **/**/jsTestDriver.jstd

5.结果

Total 2 tests (Passed: 2; Fails: 0; Errors: 0) (0.00 ms)Safari 528.16: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (0.00 ms)Firefox 1.9.0.10: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (0.00 ms)

转载于:https://www.cnblogs.com/Alex--Yang/p/3417163.html

玩转Javascript 给JS写测试相关推荐

  1. Node.js 单元测试:我要写测试 - Mocha - Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率

    -------------------------------------- 单元测试Express/NodeJs 个人理解, 1,如果不是测试http请求的单元测试,用Mocha, Chai等基本够 ...

  2. 利用js写的见缝插针小游戏

    利用js写的见缝插针小游戏 今天给大家带来的就是一款叫做<见缝插针>的游戏.有空你就往里插,直到你无处可插!看你能过多少关! 游戏截图 失败时 代码如下 js代码 index.js 测试游 ...

  3. js ...运算符_「 giao-js 」用js写一个js解释器

    前言 在这篇文章中,我们将通过 JS 构建我们自己的 JS 解释器,用 JS 写 JS,这听起来很奇怪,尽管如此,这样做我们将更熟悉 JS,也可以学习 JS 引擎是如何工作的! 什么是解释器 (Int ...

  4. HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)

    用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...

  5. 网站建设 之 用js写wasm

    为什么要这么做?编译js比解释js更快是必然的 wasm是什么? 我期望是一个二进制文件 WebAssembly(又名wasm)是一种高效的,低级别的编程语言. 它让我们能够使用JavaScript以 ...

  6. 肝了4.5万字,手把手带你玩转JavaScript(建议收藏)

    江哥手把带你玩转 JavaScript 分为 5 期,大概 15 万字,建议点赞,关注,收藏,防止失联. 本期为第一期入门篇,4.5 万字. 什么是JavaScript? JavaScript简称JS ...

  7. 使用javascript的网速测试代码

    使用javascript的网速测试代码: Javascript 最简单检测网速的方法.网速很慢,但又得打开 Flash 是一件很痛苦的事情,特别是 Silverlight 来临之际,这个技术可能有点用 ...

  8. 【javascript】手写一个webpack loder

    [javascript]手写一个webpack loder 手写一个loader 为什么需要loader?  webpack 实际上只能处理js文件,那么对于除了js文件的其他类型的文件 比如 css ...

  9. 用Three.js写h5小游戏-3d飞机大战

    用Three.js写h5小游戏-飞机大战 博主的话 运行图片 目录路径![在这里插入图片描述](https://img-blog.csdnimg.cn/20190829103702978.jpg?x- ...

最新文章

  1. 深入实践Spring Boot1.3.2 一个简单的实例
  2. PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)
  3. 一天搞定CSS: CSS选择器优先级--08
  4. 处理对象(toString()方法详解和==与equals方法的区别)
  5. STC51-C51基础知识
  6. javascript图片轮换
  7. perl学习之:肯定匹配和否定匹配
  8. viper4android最新版卡刷包,viper4android fx音效驱动
  9. 苹果发布iOS/iPadOS 14.6第一个公测版本:更新内容未知
  10. Vue项目npm run dev后 报错Cannot GET /
  11. HTML固定的底栏(flex布局)
  12. BZOJ1878 [SDOI2009]HH的项链
  13. 京瓷1020手动双面打印提示_解决京瓷2201复印机不能双面打印问题
  14. 3dmax怎么清理注册表?3dmax注册表怎么删除干净?
  15. HBuilder js,css压缩,增强代码的安全性
  16. 进程和线程之面试须知
  17. ArGIS计算多个栅格均值、最大值等
  18. 注册github一直显示验证码错误的问题
  19. maven 打包 程序包org.project.entity不存在
  20. SharePoint 2013 文档库“样式”变了

热门文章

  1. 程序语言基础:解释程序基本原理笔记
  2. 进程间通信(python)
  3. 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题
  4. 第三次作业-Scrum
  5. 持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型
  6. Java 8 并发: 原子变量和 ConcurrentMap
  7. Oracle数据库在Nokia
  8. KDD走进阿里 数百专家聚集探讨产学研一体化
  9. js高级程序设计的笔记(一)
  10. swift学习选pizza项目