网页前端持续集成(1) - JSCoverage的使用简介

    公司项目组使用jscoverage对被测试过的js文件作代码覆盖率检测。上一个tag的代码,jscoverage运行的好好的。到了新的tag,由于工程文件作了调整,js源代码文件所在路径改动较大,导致jscoverage页面上始终无法显示各个js文件的覆盖率。前两天我依照jscoverage文档的介绍,自己实现了一个小的demo,通过这个过程,搞清楚了jscoverage使用中的各文件之间相互关系,解决了项目组的问题。

官网用户手册:jscoverage user manual

1. 最简单的模型就是一个html文件,一个js文件。

我使用的文件如下:

 -->src                               debug.bat              --> dst

      --> host.html                ==>                      --> jscoverage.html   

      --> dummy.js                                            --> host.html

                                                                          --> dummy.js(instrumented)

这里的调用关系就是,jscoverage.html -> host.html -> dummy.js(instrumented). JsCoverage 通过在指定的JS文件中对于每一行有效语句加入标签,从而在相关网页运行过后得到一个%覆盖率。

debug.bat:

@echo off
RD D:\DevCode\jsCoverage\dst /S /Q
D:\DevCode\jscoverage\jsCoverage.exe D:\DevCode\jscoverage\src D:\DevCode\jscoverage\dst\ --encoding=utf-8

运行该bat之后,可以生成上述dst文件夹。接下来,启动jscoverage.html. 官方的User Manager建议使用IIS创建一个web链接,而不是直接html双击打开,原因在于目前的浏览器对于文件url可能有些安全性的限制,细节可查官网用户手册。

jscoverage.html运行如下:



此时选择Summary 标签页,可以看到dummy.js代码中目前被运行过的部分:



点击dummy.js链接,可调到Source标签页看到每行被注入位置的原文件:


显然,此时53%的覆盖率很准确。回到Browser标签页,再点击其他的radio button, Summary页中的覆盖率会立即更新,直至100%


2. 公司项目中的实际情况要复杂一些。但是文件间相互路径关系并没变

                                                 .bat

--> runUT.html                        ==>                      --> jsCoverage.html

                                                                               --> runUT.html

--> srcUT                                                              --> srcUT

     --> dummyUT.js                                                  --> dummyUT.js

--> src                                                                   --> src    

     --> dummy01.js                                                  --> dummy01.js(instrumented)

     --> dummy02.js                                                  --> dummy02.js(instrumented )

由于jscoverage.html启动之后,UT case是runUT.html进行调用的,注意这里xxxUT.js和xxx.js的相对路径保持不变。我们的.bat将完成如下工作:

1. 将runUT.xml所在目录整体复制生成新的文件夹

2. 去除其中无用的文件文件夹(.svn)

3. 标明那些被复制但不注入行位置锚记的文件 (xxxUT.js)

具体各选项见jscoverage.exe --help


JSCoverage是个方便统计js代码覆盖率的工具,非常适合集成进build server作定时地监测。


版权声明:本文为teaspring原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。