|
|
|
## JsTestDriver (sans accès root)
|
|
|
|
|
|
|
|
- [JsTestDriver](https://code.google.com/p/js-test-driver/) est un autre framework pour les tests JS.
|
|
|
|
- JSTD permet d'intégrer des données liées à la couverture des tests en exécutant les tests JavaScript en ligne de commande et en récupérant les données au moyen d'un plugin dédié coverage
|
|
|
|
- JSTD permet de réaliser les tests sur plusieurs navigateurs
|
|
|
|
|
|
|
|
- Télécharger le moteur JsTestDriver [ici](http://www.fil.univ-lille1.fr/~bilasco/TOOLS/JsTestDriver-1.3.5.jar) ou [ailleurs](https://code.google.com/p/js-test-driver/downloads/list)
|
|
|
|
|
|
|
|
- Télécharger le plugin coverage [ici](http://www.fil.univ-lille1.fr/~bilasco/TOOLS/coverage-1.3.5.jar) ou [ailleurs](https://code.google.com/p/js-test-driver/downloads/list) (mesurant la couverture des tests) et le placer à la racine de votre projet
|
|
|
|
|
|
|
|
- Télécharger les adaptateurs QUnit pour JSTestDriver [ici](http://www.fil.univ-lille1.fr/~bilasco/TOOLS/JSTDQUA.zip) ou [ailleurs](http://code.google.com/p/js-test-driver/source/browse/#svn/trunk/JsTestDriver/contrib/qunit/src)
|
|
|
|
- par défaut uniquement __module__, __test__ et __ok__ sont supportés ;
|
|
|
|
- dans le fichier QUnitAdaptor.js dans l'archive (ici) un support minimal a été ajouté pour __throws__, __equals__ et l'utilisation des __fixtures__ ;
|
|
|
|
- les courageux peuvent pousser encore plus l'adaptation ...
|
|
|
|
|
|
|
|
- Configurer le lien entre JsTestDriver et le projet en éditant à la racine du projet le fichier jsTestDriver.conf
|
|
|
|
```
|
|
|
|
server: http://localhost:9876
|
|
|
|
|
|
|
|
basepath: "."
|
|
|
|
|
|
|
|
plugin:
|
|
|
|
- name: "coverage"
|
|
|
|
jar: "coverage-1.3.5.jar"
|
|
|
|
module: "com.google.jstestdriver.coverage.CoverageModule"
|
|
|
|
|
|
|
|
load:
|
|
|
|
|
|
|
|
# Add these lines to load qunit, the equiv function and adapter in order, before the tests
|
|
|
|
- JSTDQUA/equiv.js
|
|
|
|
- JSTDQUA/QUnitAdapter.js
|
|
|
|
|
|
|
|
# And this loads the source files we are testing
|
|
|
|
- src/*.js
|
|
|
|
|
|
|
|
# This is where we load the qunit tests
|
|
|
|
- test/money_test.js
|
|
|
|
- test/money_ops_test.js
|
|
|
|
- test/calc_test.js
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
- Lancer le serveur sur le port choisi (9876)
|
|
|
|
```
|
|
|
|
java -jar PATH_TO/JsTestDriver-1.3.5.jar --port 9876
|
|
|
|
```
|
|
|
|
- on peut spécifier --runnerMode DEBUG pour avoir plus de détails
|
|
|
|
- on peut cibler un navigateur en indiquant --browser CHEMIN_VERS_BINAIRE_BROWSER
|
|
|
|
- assurez-vous que le serveur est bien lancé en se connectant à http://localhost:9876 (si vous n'avez pas indiqué --browser, il faut cliquer sur "Capture this browser")
|
|
|
|
- vous pouvez avoir différentes configurations serveur et client / navigateur
|
|
|
|
|
|
|
|
- Lancer le client en sauvegardant les informations d'analyse (des fois, il est nécessaire de le lancer deux fois)
|
|
|
|
```
|
|
|
|
java -jar PATH_TO/JsTestDriver-1.3.5.jar --config jsTestDriver.conf --tests all --testOutput forSonar
|
|
|
|
```
|
|
|
|
|
|
|
|
- Le plugin coverage sauvegarde des informations sur la couverture en forSonar/jsTestDriver.conf-coverage.dat
|
|
|
|
- les informations peuvent être exploitées et visualisées également en utilisant [genhtml doc](http://ltp.sourceforge.net/coverage/lcov/genhtml.1.php) [genhtml perl code](http://www.fil.univ-lille1.fr/~bilasco/TOOLS/genhtml)
|
|
|
|
|
|
|
|
## Integration Sonar & JsTestDriver
|
|
|
|
|
|
|
|
- Le lien entre le deux se fait en intégrant les données de couverture dans les Qube
|
|
|
|
```
|
|
|
|
--------------------------------------------
|
|
|
|
- Contenu sonar-project.properties -
|
|
|
|
--------------------------------------------
|
|
|
|
#remplacez X par votre numéro d'utilisateur
|
|
|
|
sonar.projectKey=fil:m2eserv
|
|
|
|
sonar.projectName=NOMPROJET
|
|
|
|
sonar.projectVersion=1.0
|
|
|
|
sonar.projectDescription=DESCRIPTION PROJET
|
|
|
|
|
|
|
|
# chemin vers les répertoires contenant les sources et les tests
|
|
|
|
sonar.sources=src
|
|
|
|
sonar.tests=test
|
|
|
|
|
|
|
|
# indication du langage utilisé dans le projet
|
|
|
|
sonar.language=js
|
|
|
|
|
|
|
|
# encodage des sources
|
|
|
|
sonar.sourceEncoding=UTF-8
|
|
|
|
|
|
|
|
# integration des données de couverture issues de JsTestDriver
|
|
|
|
sonar.javascript.lcov.reportPath=forSonar/jsTestDriver.conf-coverage.dat
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Exclusions
|
|
|
|
|
|
|
|
- Vous pouvez demander d'exclure de l'analyse certains dossiers/fichiers (notamment ceux provenant du code externe - frameworks JS, autres)
|
|
|
|
```
|
|
|
|
--------------------------------------------
|
|
|
|
- Contenu sonar-project.properties -
|
|
|
|
--------------------------------------------
|
|
|
|
...
|
|
|
|
# exclure tout un dossier
|
|
|
|
sonar.exclusions=CHEMIN_VERS_DOSSIER/**
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Projets multi-modules
|
|
|
|
|
|
|
|
- Vous pouvez configurer indépendamment plusieurs modules écrites en langages différents. Ci-dessous à titre d'exemple un projet contenant du code JS et du code PHP
|
|
|
|
```
|
|
|
|
--------------------------------------------
|
|
|
|
- Contenu sonar-project.properties -
|
|
|
|
--------------------------------------------
|
|
|
|
...
|
|
|
|
sonar.modules=module1,module2
|
|
|
|
module1.sonar.projectBaseDir=ROOT_SOURCE/js
|
|
|
|
module2.sonar.projectBaseDir=ROOT_SOURCE/php
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
### Grunt (nodejs), QUnit et Sonar
|
|
|
|
|
|
|
|
* il existe également la possibilité de réaliser des statistiques de couverture en utilisant [nodejs/grunt/grunt-croc-qunit/grunt-contrib-connect/serve-static/istanbul/phantomjs](CouvertureNodeJS) |