Use Blanket.js instead of jscover

2013-06-07 19:16

Use Blanket.js instead of jscover

by MK2

at 2013-06-07 11:16:00

original http://www.cnblogs.com/fengmk2/archive/2013/06/07/blanketjs-instead-of-jscover.html

在遇到 Blanket.js 之前,我一直使用这 jscover 来做代码覆盖率测试。



jscover



使用 jscover ,好处是不需要编译,直接使用 java 版本;缺点是需要 java 环境依赖。
通过 Makefile 来驱动整个测试执行,如 urllib/Makefile



TESTS = test/.test.js
REPORTER = spec
TIMEOUT = 20000
JSCOVERAGE = ./node_modules/jscover/bin/jscover

test:
@NODE_ENV=test ./node_modules/mocha/bin/mocha \
--reporter $(REPORTER) \
--timeout $(TIMEOUT) \
$(TESTS)

test-cov:
@rm -rf ./lib-cov
@$(JSCOVERAGE) lib lib-cov
@URLLIB_COV=1 $(MAKE) test REPORTER=dot
@URLLIB_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html

.PHONY: test test-cov


执行代码覆盖率测试:



$ make test-cov


打开 coverage.html 就能看到覆盖情况了。



Blanket.js



某天在github上看到 Blanket.js ,算是意外收获,终于能摆脱代码转换依赖了。




Blanket.js is an easy to install, easy to configure, and easy to use JavaScript code coverage library that works both in-browser and with nodejs.




使用上 Blanket.js 以后,不再需要将代码转换落地成文件,也不需要java依赖。



还是以 urllib/Makefile 为例:



TESTS = test/.test.js
REPORTER = spec
TIMEOUT = 20000
MOCHA_OPTS =

test:
@NODE_ENV=test ./node_modules/mocha/bin/mocha \
--reporter $(REPORTER) \
--timeout $(TIMEOUT) \
$(MOCHA_OPTS) \
$(TESTS)

test-cov:
@URLLIB_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=dot
@URLLIB_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=html-cov > coverage.html

.PHONY: test test-cov


参考 Getting Started Guide (nodejs version)



package.json 添加上 blanket 的代码匹配模式,确定你需要对那个路径下的代码进行转换。



"scripts": {
"test": "make test",
"blanket": { "pattern": "urllib/lib" }
},


执行命令还是保持一致:



$ make test-cov


coverage.html 跟使用 jscover 的报告结果一致,缺没有了文件生成,也不再需要去服务器上安装java了。



Project



对于非lib类项目,如普通的应用项目,进行代码覆盖率测试,同样可以使用 Blanket.js 很好地做到。



urlrar 为例:



Markfile



TESTS = test/.test.js
REPORTER = spec
TIMEOUT = 10000
MOCHA_OPTS =

install:
@npm install

test: install
@NODE_ENV=test ./node_modules/mocha/bin/mocha \
--reporter $(REPORTER) \
--timeout $(TIMEOUT) \
$(MOCHA_OPTS) \
$(TESTS)

test-cov:
@URLRAR_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=html-cov > coverage.html
@URLRAR_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=travis-cov

test-all: test test-cov

.PHONY: test-cov test test-all


package.json



"devDependencies": {
"travis-cov": "
",
"blanket": "",
// ...
},
"scripts": {
"test": "make test-all",
"blanket": {
"pattern": "//^((?!(node_modules|test)).)
$/",
"data-cover-flags": {
"debug": false
}
},
"travis-cov": {
"threshold": 93
}
},


$ npm test 


运行结果: 包含测试结果和代码覆盖率.




1
1



有爱



^_^ 希望本文对你有用。

本文链接