玩转Javascript 给JS写测试

  给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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 之自定义view实现水波纹效果

在实际的开发中&#xff0c;很多时候还会遇到相对比较复杂的需求&#xff0c;比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果&#xff0c;兴致高昂的来找你&#xff0c;看了之后目的很明确&#xff0c;当然就是希望你能给她&#xff1b; 在这样的关键时候&#xff0c;身子板就一…

FFLIb Demo CQRS

使用FFLIB 构建了一个demo&#xff0c;该demo模拟了一个常见的游戏后台架构&#xff0c;该demo主要有一下亮点&#xff1a; FFLIB 实现进程间通信非常方便基于CQRS 思想构建LogicServer使用Event Publish/Subscribe&#xff0c; 实现各个模块的解耦合基于Event 实现实体对象的单…

【自定义标签开发】01-标签简介和开发第一个标签

自定义标签简介自定义标签主要用于移除Jsp页面中的java代码。要使用自定义标签移除jsp页面中的java代码&#xff0c;只需要完成以下两个步骤:1.编写一个实现Tag接口的java类&#xff0c;把页面java代码移到这个java类中(标签处理器类)。2.编写标签库描述(tld)文件&#xff0c;在…

三联《少年》创刊,各领域佼佼者畅言新知,帮少年建立思维素养体系!

▲点击查看很多中国小孩的成长是断层的。10岁前被视作可爱稚子&#xff0c;被大人护着走&#xff1b;18岁猛然被定义为成年人&#xff0c;要选择大学、专业&#xff0c;开始面对感情。中间的人生呢&#xff1f;“你是个学生&#xff0c;学习是本职&#xff0c;现在谈什么人生&a…

mysql utf8 bin设置_[mysql]修改collation为utf8_bin

mysql默认字段值区分大小写&#xff1a;character-set-serverutf8collation-serverutf8_bininit-connectSET NAMES utf8;SELECT DEFAULT_CHARACTER_SET_NAME charset, DEFAULT_COLLATION_NAME collationFROM information_schema.SCHEMATA WHERE SCHEMA_NAME billing01;SELECT …

C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

01—自定义引导程序在上一部分中&#xff0c;我们讨论了Caliburn.Micro WPF应用程序的最基本配置&#xff0c;并演示了与操作和约定相关的两个简单功能。在这一部分中&#xff0c;我想进一步探讨Bootstrapper类。让我们首先将应用程序配置为使用IoC容器。本例中我们将使用内置容…

Android 使用XmlPullParser解析xml

这里我们假设要解析的xml文件名为&#xff1a;test.xml&#xff0c;我们将其放在assets路径中。 xml文件内容为&#xff1a; <?xml version1.0 encodingutf-8 standaloneyes ?> <books><book id"1"><name>Java编程思想</name><pr…

链表之打印两个有序链表的公共部分

题目:打印两个有序链表的公共部分 package com.chenyu.zuo.linkedList; /*** 打印有序链表的公共部分* @author 陈喻*题目:给定两个有序链表的头指针head1和head2,打印出两个链表的公共部分*思路:因为有序*如果head1的值小于head2,则head1往下移动*如果head2的值小于head1,…

批处理for命令详解

批处理for命令详解批处理for命令详解 2008-03-07 11:00 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号) FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令 参数…

趁爸妈不在家约男朋友回家吃饭,然而......

1 有没有男主很脆弱的电影&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 成长期-成熟期-完全体-究极体▼3 千万别在家乱放星巴克的袋子&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 发生了很奇怪的事情▼5 只有你想不到&#xff0c;没…

java泛型不是计算运行时的数据类型

2019独角兽企业重金招聘Python工程师标准>>> package com.ada.data.entity;import java.io.Serializable;import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuper…

spark 连接mysql 命令_spark-submit命令包括mysql连接器

我有一个scala对象文件&#xff0c;它在内部查询mysql表做一个连接并将数据写入s3&#xff0c;在本地测试我的代码它运行得很好 . 但是当我将它提交到集群时&#xff0c;它会抛出以下错误&#xff1a;线程“main”java.sql.SQLException中的异常&#xff1a;在org.apache.spark…

C#内建接口:IComparable

这节开一个新的系列&#xff1a;C#内建接口。主要给大家讲一下C#内部给我们定义的一些常用的接口&#xff0c;以及它们是怎么使用的。基本上一节讲一个吧&#xff0c;本节先从IComparable开始。01了解IComparable一般的&#xff0c;值类型的数据比较大小&#xff0c;就是看它俩…

链表之删除单链表倒数第K个节点

删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路: 给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1、2、3、4、5、6 K值是2,链表的总长度是6,要得倒数第二个数的值,前面就有6-2=4个的值,如果头结点往下移,移到…

script的defer和async

我们常用的script标签&#xff0c;有两个和性能、js文件下载执行相关的属性&#xff1a;defer和async defer的含义【摘自https://developer.mozilla.org/En/HTML/Element/Script】 This Boolean attribute is set to indicate to a browser that the script is meant to be exe…

WWDC 2013 Session笔记 - Xcode5和ObjC新特性

这是我的WWDC2013系列笔记中的一篇&#xff0c;完整的笔记列表请参看这篇总览。本文仅作为个人记录使用&#xff0c;也欢迎在许可协议范围内转载或使用&#xff0c;但是还烦请保留原文链接&#xff0c;谢谢您的理解合作。如果您觉得本站对您能有帮助&#xff0c;您可以使用RSS或…

难以摸透的直男脑回路......

1 你年纪不小了&#xff0c;该结婚了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 泰国小哥低成本Cos赛博朋克2077 ▼3 郑爷爷也太会了吧▼4 奇奇怪怪的知识又增加了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼5 酸奶今天7.1折&#xff08;via.…

数论概论(Joseph H.Silverman) 习题 39.1 $\sqrt{3}$和$\sqrt{5}$的连分数展开中的重复现象...

计算$\sqrt{3}$和$\sqrt{5}$的连分数中的前10项. 解:\begin{align*} \sqrt{3}1\dfrac{1}{\dfrac{1}{\sqrt{3}-1}}\end{align*}\begin{align*} \sqrt{3}1\dfrac{1}{1\dfrac{1}{\dfrac{1}{\dfrac{\sqrt{3}-1}{2}}}}\end{align*}\begin{align*} \sqrt{3}1\dfrac{1}{1\dfrac{1}{2\d…

ansible备份mysql_ansible做mysql备份和安全加固

2019独角兽企业重金招聘Python工程师标准>>>1. mysql备份A patch adding nameall was added to the mysql_db module on May 12, 2015, so the recommended way to dump all databases is:# Dumps all databases to hostname.sql- mysql_db: statedump nameall target…

链表之删除双链表倒数第K个节点

链表之删除双链表倒数第K个节点 题目: 链表之删除双链表倒数第K个节点 思路: 之前写过 http://blog.csdn.net/u011068702/article/details/50280099(链表之删除单链表倒数第K个节点),思路是一样的,如果不知道,你可以参考下 代码实现: package com.chenyu.zuo.link…