I highly recommend switching to using Istanbul for code coverage. With the simple line
"test": "istanbul test jasmine-node -- test" in your
package.json scripts block you get optional code coverage integrated with jasmine, without the need to run a separate instrumentation step. Istanbul includes detailed branch and function metrics which JSCoverage does not.
At this point the reporter requires a little setup to use as it assumes you are already using jasmine-node for testing. A simple wrapper script described below makes it easy to add this reporter to an out of the box jasmine-node install.
npm install jscoverage-reporter
You will also need a version of JSCoverage installed to generate the covered files. My preference is to download and install from http://siliconforks.com/jscoverage/ as we also test non node.js code.
require('jscoverage-reporter'); jasmine.getEnv().addReporter(new jasmine.JSCoverageReporter('./reports'));
Create a file called coverage.js:
require('jasmine-node'); require('jscoverage-reporter'); var jasmineEnv = jasmine.getEnv(); // Adjust output directory as needed jasmineEnv.addReporter(new jasmine.JSCoverageReporter('./reports')); require('./node_modules/jasmine-node/lib/jasmine-node/cli.js');
After running JSCoverage on the code to test:
npm install jasmine-node node coverage.js <jasmine-node options>
To run a single command that executes JSCoverage and runs the tests, an example can be found at tools/coverage.js.
package.json you can then define your test script as:
"test": "node tools/coverage --junitreport build/test",
coverage.xml will be produced. The
jscoverage.json file can be used with the modified JSCoverage template to view the coverage. As JSCoverage complains about file based paths, to view the data a simple node.js based HTTP report server can be found in tools/report.js. The
coverage.xml is suitable for Emma report tracking such as with Emma Jenkins Plugin.
Copyright (c) 2012 Daniel Rinehart. This software is licensed under the MIT License.