Blanket.js vs Istanbul-js vs JSCover

2019-03-17 03:47发布

问题:

I am trying to decide on a JS test code coverage tool but cannot see clearly the differences between them. The top hits in Google are blanket.js, istanbul-js and JSCover.

Can anyone offer any information on the key differences between them and advantages/disadvantages?

Are there any other useful ones out there?

回答1:

After some trying around i clearly find istanbul the most convenient tool to bring coverage analysis to a node-js project.

  • its installed with npm install
  • it sets up its behavior via the .istanbul.yml
  • gets invoked by its own executable
  • it provides multiple report formats such as clover, lcov, jscoverage, etc.

Istanbul uses the provided executable or js-script to perform the tests and collect coverage information. It can be installed via npm:

npm install istanbul mocha

after successful installation simply invoke it by

./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha

respect the '_' since mocha forks the _mocha-executable as stated here

blanket.js for nodejs integrates easily by

  • its installed with npm install
  • configuring its behavior via the package.json
  • getting invoked by mocha by requiring blanket at commandline
  • generating statistics that are interpreted by mocha's reporters, i.e. html-cov
  • can be used in browser JS

basically it is ready to use after doing

npm install blanket mocha

after successful installation simply run your mocha tests like that

./node_modules/.bin/mocha --require blanket --reporter html-cov >coverage.html

Unfortunately you have to invoke the mocha tests twice if you want to collect coverage information as well as collect test reports since you can only provide one reporter to mocha.

I can not say anything about JSCover since its installation was to complicated for me. Important for me was that i do not have to install any packages as root or even compile things since it becomes more complicated for other users to create a development environment.