60 votes

Test unitaire automatisé avec JavaScript

Je vais essayer d'intégrer un peu de JavaScript (tests unitaires dans mon processus de génération automatique. Actuellement JSUnit fonctionne bien avec JUnit, mais il semble être abandonware et n'a pas la bonne prise en charge d'AJAX, de débogage et de délais d'attente.

Quelqu'un a eu un peu de chance, l'automatisation (avec ANT) une unité de bibliothèque de test tels que YUI test, JQuery QUnit, ou jQUnit (http://code.google.com/p/jqunit/)?

Remarque: j'utilise une coutume construit la bibliothèque AJAX, donc le problème avec Dojo du département de la SANTÉ, c'est qu'il vous oblige à utiliser leur propre AJAX appels de fonction et les gestionnaires d'événements de travailler avec tout AJAX tests unitaires.

24voto

Karl Points 1085

Je suis sur le point de commencer à faire du Javascript TDD sur un nouveau projet, je travaille sur. Mon plan actuel est d'utiliser qunit de faire les tests unitaires. Tout en développant les tests peuvent être effectués par tout simplement rafraîchissant la page de test dans un navigateur.

Pour une intégration continue (et assurer l'exécution des tests dans tous les navigateurs), je vais utiliser le Sélénium pour charger automatiquement le harnais de test dans chaque navigateur, et lire le résultat. Ces tests seront effectués sur chaque checkin à la source de contrôle.

J'ai aussi l'intention d'utiliser JSCoverage pour obtenir le code d'analyse de la couverture des tests. Ce sera également automatisé avec le Sélénium.

Je suis actuellement dans le milieu de cette mise en place. Je vais mettre à jour cette réponse à l'aide des renseignements plus précis une fois que j'ai la configuration martelé.


Outils de test:

20voto

Alexandre Victoor Points 1814

Il y a beaucoup de javascript unit test framework (jsUnit, scriptaculous, ...) mais jsUnit est le seul que je connaisse qui peut être utilisé avec un système automatisé.

Si vous faites le "vrai" test de l'unité, vous ne devriez pas avoir besoin de l'AJAX. Par exemple, si vous utilisez un RPC ajax framework comme DWR, vous pouvez facilement écrire un simulacre de la fonction :

 fonction mockFunction(someArg, callback) {
 var resultat = ...; // certains traitements 
 setTimeout(
function() { callback(result); }, 300 // certains faux latence
); }

Et oui, JsUnit faire gérer les délais d'expiration : Simulation de Temps en jsUnit Tests

13voto

cuberoot Points 756

Je suis un grand fan de js-test-driver

Cela fonctionne bien dans un environnement CI et est capable de capturer les navigateurs réels pour les tests inter-navigateurs.

4voto

Elijah Manor Points 8991

J'ai récemment lu un article de Bruno utilisant JsUnit et créant un framework JsMock en plus ... très intéressant. Je pense utiliser son travail pour commencer à tester un peu mon code Javascript.

Mock Javascript ou Comment tester le Javascript en dehors de l'environnement du navigateur

4voto

Ingvald Points 373

Hudson CI vient d’exécuter JasmineBDD (sans tête), du moins pour les tests unitaires pures en javascript.

(Hudson exécutant Java via un shell, exécutant Envjs et JasmineBDD.)

Je ne l'ai pas encore fait jouer avec une grande bibliothèque, comme un prototype.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X