我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用karma
和instanbul-combine
来获取代码覆盖率。它似乎istanbul-combine
不适用于当前的节点模块,并且不再维护:推荐的替换是nyc
. 我在istanbul-combine
替换nyc
为Makefile
.
这是我合并数据的尝试(甚至还没有尝试获取报告):
#1
@for dir in $(shell ls -d coverage/*/); do \
echo "Merging $${dir}"; \
npx nyc merge $${dir} coverage-final.json; \
done
#2
npx nyc merge coverage coverage-final.json
#3
npx nyc merge --include coverage/*/ coverage-final.json
覆盖数据在coverage/*/coverage-final.json
其中,但这些尝试都没有成功地将其合并到结果文件coverage-final.json
中。
对于#1,我很确定它实际上只是将一组结果合并到结果文件中。使用#2,有一个错误;但是如果我将该命令放在 shell CLI 中,则不会将任何内容放入结果文件中。
使用#3,至少没有错误,但只有一个覆盖文件被合并。
这是我要替换的原始 Makefile 行:
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
-d coverage/summary -r html \
coverage/*/coverage-final.json