web-dev-qa-db-fra.com

Blanket.js vs Istanbul-js vs JSCover

J'essaie de décider d'un outil de couverture de code de test JS mais je ne vois pas clairement les différences entre eux. Les meilleurs succès de Google sont blanket.js, istanbul-js et JSCover.

Quelqu'un peut-il fournir des informations sur les principales différences entre eux et leurs avantages/inconvénients?

Y en a-t-il d'autres utiles?

35
Christopher Grigg

Après quelques essais, je trouve clairement istanbul l'outil le plus pratique pour apporter une analyse de couverture à un projet node-js.

  • son installé avec npm install
  • il configure son comportement via le . istanbul.yml
  • est invoqué par son propre exécutable
  • il fournit plusieurs formats de rapport tels que trèfle, lcov, jscoverage, etc.

Istanbul utilise l'exécutable ou le script js fourni pour effectuer les tests et collecter les informations de couverture. Il peut être installé via npm:

npm install istanbul mocha

après une installation réussie, il suffit de l'invoquer par

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

respectez le '_' puisque le moka bifurque le _mocha- exécutable comme indiqué ici

blanket.js pour nodejs s'intègre facilement par

  • son installé avec npm install
  • configurer son comportement via le package.json
  • être invoqué par mocha en exigeant blanket en ligne de commande
  • générer des statistiques qui sont interprétées par les journalistes de mocha, c'est-à-dire html-cov
  • peut être utilisé dans le navigateur JS

en gros, il est prêt à l'emploi après avoir fait

npm install blanket mocha

après une installation réussie, exécutez simplement vos tests de moka comme ça

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

Malheureusement, vous devez appeler les tests mocha deux fois si vous souhaitez collecter des informations sur la couverture ainsi que des rapports de test, car vous ne pouvez fournir qu'un seul reporter à mocha.

Je ne peux rien dire sur JSCover car son installation était trop compliquée pour moi. L'important pour moi était que je n'ai pas besoin d'installer de paquetages en tant que root ou même de compiler des choses car il devient plus compliqué pour les autres utilisateurs de créer un environnement de développement.

31
smoebody