MV*浏览器单元测试+代码覆盖率

好久没写BLOG了,最近弄了一个前端单元测试加代码覆盖率测试框架,使用起来非常简单,具体使用方法和介绍如下,先上图,结果如下:

github地址:https://github.com/wf123537200/FeTestAndCov

frontEnd-test-and-cov

这是一个便捷,快速的,浏览器友好的单元测试框架。

提供功能为:

1、提供实时前端单元测试结果。

2、提供单元测试覆盖率实时显示。

为什么有这个框架?

因为作为前端一直想实现tdd开发,之前受到几种限制:

1、使用jq的年代,dom操作实在无法按照逻辑做单元测试,因为dom的结构变化太多了。

2、当使用mv*框架却又没有前端直观的前端测试时,很难做到tdd。

3、前端代码没有测试,往往无法重构和保证质量

框架基于什么技术?

1、mocha,这里使用mocha的浏览器支持

2、coverjs,使用coverjs进行代码插针,用于覆盖率统计

3、reporter,使用一位外国仁兄自己写的一个覆盖率报告插件,修复了相关BUG。

框架如何使用?

简化版本:

1、拷贝all.js和all.css到能引用的目录下,然后参照test/runner.html和test/spec.js写测试代码即可,刷新runner.html即可看到效果。

2、覆盖率统计,需要使用converjs或者使用grunt版本

grunt版本,自动插针覆盖率

1、当然是从github下载代码

2、然后将以下代码加入你的Package.json(如果你不知道这是啥,我只能说你不是做前端的。。)

具体代码如下,其实主要就是安装grunt和两个插件,如果你的代码里面已经有了,那么恭喜你,可以不加上了:

    "grunt": "~0.4.0",
    "grunt-coverjs": "*",
    "grunt-contrib-watch": "~0.5.3",
    "load-grunt-tasks": "~0.3.0",

3、执行npm代码 npm install

4、然后创建GruntFile.js(如不明白可参考,www.gruntjs.net),如已存在,可以跳过

5、向GruntFile.js里面加入如下代码(目录结构可以根据当前目录结构进行改变):

 // prefix 预处理部分,由于grunt-cover有错误,所以需要使用自带文件对其进行copy
    // 也可以直接将工程vendor/js/grunt-coverjs/coverjs文件拷贝到node_modules/grunt-coverjs/tasks下,覆盖同名文件
    copy: {
      main: {
        files: [
          {expand: true, flatten: true, src: ['vendor/js/grunt-coverjs/*'], dest: 'node_modules/grunt-coverjs/tasks', filter: 'isFile'}
        ]
      }
    },
  // 自动做插针合并以及监控代码
      cover: {
        compile: {
          files: [{
            // 测试代码存放地址
            'test/dist/test.js':
            // 原工程代码存放地址
            ['src/*.js']
          }]
        }
      },
      watch: {
        js: {
          files: [
            // 需要监控变化的代码
            "src/*.js"
          ],
          tasks: ['cover']
        }
      }
      // 由于grunt-coverjs有bug,需要做修复,这里需要做个修复
      grunt.registerTask('preFix', ['copy']);
      // 注册grunt任务,也可以修改default名称
      grunt.registerTask('default', ['cover', 'watch']);

6、如果一切都OK,在当前工程根目录下执行grunt pre(仅第一次需要执行), grunt,你就可以开始编写测试代码了。

7、测试代码样例如工程目录test/runner.html(只需要引入all.js和all.css即可),和test/spec.js,nb的你肯定一看就明白了。

8、获得结果,只要直接打开runner.html就可以看到测试结果。

时间: 2024-08-07 17:37:15

MV*浏览器单元测试+代码覆盖率的相关文章

单元测试-代码覆盖率工具 -- JaCoCo

最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 随着敏捷开发的流行,编写单元测试已经成为业界共识.但如何来衡量单元测试的质量呢?有些管理者片面追求单元测试的数量,导致底下的开发人员投机取巧,编写出大量的重复测试,数量上去了,质量却依然原地踏步.相比单纯追求单元测试的数量,分析单元测试的代码覆盖率是一种更为可行的方式.JaCoCo(Java Code Coverage)就是一种分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中哪些部分被

在撩单元测试代码覆盖率

在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%.于是乎,测试人员费尽心思设计案例覆盖代码.用代码覆盖率来衡量,有利也有有弊.本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论. 首先,让我们先来了解一下所谓的"代码覆盖率".我找来了所谓的定义: 代码覆盖率 = 代码的覆盖程度,一种度量方式. 上面简短精悍的文字非常准确的描述了代码覆盖率的含义.而代码覆盖程度的度量方式是有很多种的,这里介绍一

使用JaCoCo统计单元测试代码覆盖率

1 JaCoCo介绍 JaCoCo是EclEmma团队基于多年覆盖率库使用经验总结而研发的一个开源的Java代码覆盖率库. 2 Maven单模块接入 在工程的pom.xml文件中添加如下内容: <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>

python统计单元测试代码覆盖率

1.1.1实现过程 准备工作首先在运行命令前,我们需要安装一个包:coverage命令如下:pip install coverage #(py -3 -m pip install coverage)安装成功后,会出现Successfully等字样. 实现代码覆盖率命令一共涉及到的命令有3个,这里先全部给出,后续在用例子做详细使用讲解:第一个命令为运行一下你的测试脚本文件,第二个命令会在控制台打印出覆盖率报告信息,第三个命令会在同级目录下生成一个htmlcov的文件夹,打开文件夹中的index.h

3、学习单元测试代码覆盖率工具的使用(1)把一个英语句子中的单词次序颠倒后输出。

import java.util.Scanner; public class TestTest { public static void main(String [] a){ Scanner in=new Scanner(System.in); while(true){ String s=in.nextLine(); if(s.equalsIgnoreCase("quit")){ System.exit(0); } String[] ss=s.split("\\s+"

Karma和Jasmine自动化单元测试——本质上还是在要开一个浏览器来做测试

1. Karma的介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma.Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透! Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner).该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代

好代码是管出来的——.Net Core中的单元测试与代码覆盖率

测试对于软件来说,是保证其质量的一个重要过程,而测试又分为很多种,单元测试.集成测试.系统测试.压力测试等等,不同的测试的测试粒度和测试目标也不同,如单元测试关注每一行代码,集成测试关注的是多个模块是否能正常的协同工作. 当我们在衡量代码好坏时,其中一点就是这些代码是否进行了单元测试,测试的质量.代码覆盖率怎么样?本文将从以下几个方面介绍.Net Core中的单元测试: 单元测试简介 .Net Core中的单元测试框架 使用xUnit.Net对.Net Core应用进行单元测试 创建xUnit.

Android-jacoco代码覆盖率:单元测试覆盖率+功能测试覆盖率

参考:https://docs.gradle.org/current/dsl/org.gradle.testing.jacoco.tasks.JacocoCoverageVerification.html gradle库下载:https://maven.aliyun.com/mvn/view 案例参考来源:https://www.jianshu.com/p/1a4a81f09526 https://www.jianshu.com/p/1a4a81f09526 其他:https://testerh

Karma和Jasmine自动化单元测试

前言 在Java领域,Apache, Spring, JBoss 三大社区的开源库,包罗万象,但每个库都在其领域中都鹤立鸡群.而Nodejs中各种各样的开源库,却让人眼花缭乱,不知从何下手. Nodejs领域: Jasmine做单元测试,Karma自动化完成单元测试,Grunt启动Karma统一项目管理,Yeoman最后封装成一个项目原型模板,npm做nodejs的包依赖管理,bower做javascript的包依赖管理.Java领域:JUnit做单元测试, Maven自动化单元测试,统一项目管