Use Blanket.js instead of jscover
在遇到 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
运行结果: 包含测试结果和代码覆盖率.

有爱
^_^ 希望本文对你有用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2007-06-07 修正BlogEngine.Net中的使用全中文为标题的链接问题(在1.1以上版本此问题已被修复)
2007-06-07 Gravatar - globally recognized avatar