716 votes

Outils de test unitaire JavaScript pour le TDD

J'ai examiné et pris en compte de nombreux tests unitaires en JavaScript et outils de test, mais je n'ai pas réussi à trouver une option appropriée pour rester entièrement conforme au TDD. Alors, y a-t-il un outil de test unitaire JavaScript qui soit entièrement conforme au TDD ?

1518voto

gregers Points 2997

Karma

Un JavaScript test-coureur construit avec Node.js. Faite par l'Angulaire de l'équipe. Vous pouvez utiliser n'importe quelle affirmation-bibliothèque que vous voulez avec elle.

Vidéo: Karma prise en main

pros:

  • Utilise node.js, donc compatible avec Win/OS X/Linux
  • Exécuter des tests à partir du navigateur ou sans tête avec PhantomJS
  • Exécuter sur plusieurs clients à la fois
  • Option de lancement, de la capture, et automatiquement l'arrêt des navigateurs
  • Option pour serveur/clients sur le développement de l'ordinateur ou séparément
  • Exécuter des tests à partir de la ligne de commande (peut être intégré dans ant/maven)
  • Écrire des tests xUnit ou BDD style
  • Prend en charge plusieurs JavaScript frameworks de test
  • Auto-exécuter des tests sur enregistrer
  • Les procurations des requêtes cross-domain
  • Possible de personnaliser:
    • L'étendre à enveloppez les autres test-cadres (Jasmin, de Moka, de QUnit intégré)
    • Vos propres affirmations/réfute
    • Reporters
    • Navigateur Lanceurs
  • Plugin pour WebStorm
  • Pris en charge par l'EDI Netbeans

inconvénients:

  • Ne prend en charge NodeJS test
  • Pas de plugin pour Eclipse (encore)
  • Pas d'historique des résultats des tests précédents

Buster.js

Un JavaScript test-coureur construit avec Node.js. Très souple et modulaire. Il est livré avec son propre affirmation de la bibliothèque, mais vous pouvez ajouter votre propre si vous le souhaitez. Les affirmations de la bibliothèque est découplée, de sorte que vous pouvez également l'utiliser avec d'autres coureurs. Au lieu d'utiliser assert(!...) ou expect(...).not..., il utilise refute(...) ce qui est une bonne idée à mon humble avis.

Un navigateur de test JavaScript toolkit. Il ne test du navigateur dans le navigateur de l'automatisation (pensez JsTestDriver), qunit style de page html statique d'essais, de tests en tête des navigateurs (phantomjs, jsdom, ...), et plus encore. Jetez un oeil à l'aperçu!

Un Node.js les tests de boîte à outils. Vous obtenez le même cas de test de la bibliothèque, l'affirmation de la bibliothèque, etc. C'est également idéal pour les hybrides navigateur et Node.js code. Écrivez votre cas de test avec Buster.JS et de l'exécuter à la fois dans Node.js et dans un vrai navigateur.

Screencast: Buster.js prise en main (2:45)

pros:

  • Utilise node.js, donc compatible avec Win/OS X/Linux
  • Exécuter des tests à partir du navigateur ou sans tête avec PhantomJS (bientôt)
  • Exécuter sur plusieurs clients à la fois
  • Prend en charge NodeJS test
  • N'avez pas besoin d'exécuter serveur/clients sur le développement de l'ordinateur (pas besoin de IE)
  • Exécuter des tests à partir de la ligne de commande (peut être intégré dans ant/maven) Écrire des tests xUnit ou BDD style
  • Prend en charge plusieurs JavaScript frameworks de test
  • Reporter les tests, au lieu de commenter les sortir
  • SinonJS construit en
  • Auto-exécuter des tests sur enregistrer
  • Les procurations des requêtes cross-domain
  • Possible de personnaliser:
    • L'étendre à enveloppez les autres test-cadres (JsTestDriver intégré)
    • Vos propres affirmations/réfute
    • Reporters (xunit XML, traditionnels points, spécifications, appuyez sur, teamcity et plus intégré)
    • Personnaliser/remplacer le HTML qui est utilisé pour exécuter le navigateur-tests
  • TextMate et Emacs intégration

inconvénients:

  • Encore en version bêta, donc peut être buggy
  • Pas de plugin pour Eclipse/IntelliJ (encore)
  • Ne pas regrouper les résultats par os/navigateur/version comme TestSwarm *. Il permet toutefois d'imprimer le nom du navigateur et la version dans les résultats du test.
  • Pas d'historique des résultats des tests précédents comme TestSwarm *
  • N'est pas entièrement les travaux sur des fenêtres à compter de Mai 2014

* TestSwarm est aussi un serveur d'Intégration Continue, alors que vous avez besoin d'un autre serveur CI pour Buster.js. Il n'est cependant sortie xUnit rapports XML, il devrait donc être facile à intégrer avec d' Hudson, de Bambou ou d'autres serveurs CI.

TestSwarm

John Resig (jQuery) a créé un outil pour la distribution de test JavaScript, TestSwarm. Principalement pour l'open source JavaScript projets, mais TestSwarm est open source, donc vous pouvez configurer un serveur de vous-même pour les professionnels de l'essai. Bien que cela pourrait exiger que vous avez à faire quelques modifications.

pros:

  • Intégration continue serveur pour JavaScript
  • Prend en charge tous les principaux navigateurs/systèmes d'exploitation
  • Exécuter sur plusieurs clients à la fois
  • N'avez pas besoin d'exécuter serveur/clients sur le développement de l'ordinateur (pas besoin de IE)
  • Exécution automatique des tests sur tous les clients lorsque vous vous engager à quelque chose (ou chaque fois que vous modifiez le script pour exécuter les tests)
  • Afficher l'historique des résultats de test pr commettre
  • Prend en charge plusieurs JavaScript frameworks de test
  • Ont des résultats de test pour les OS et la version de votre navigateur
  • Le crowdsourcing de la tester dans une multitude de navigateurs

inconvénients:

  • Ne pouvez pas briser votre construction à travers ant/maven
  • Ne remarquez le test échoue avant de s'engager
  • Pas de IDEplug-en

http://ejohn.org/blog/javascript-testing-does-not-scale/

TestSwarm architecture:

alt text

BrowserSwarm

BrowserSwarm est un projet de appendTo, Sauce Labs et l'équipe Internet Explorer. C'est essentiellement un hébergé fourche version de TestSwarm.

En plus de tous les avantages de TestSwarm, BrowserSwarm a déjà tous les navigateurs connectés à l'essaim et prêt à tester votre code, donc ne nécessitant pas de vous d'ajouter des clients à vous-même ou le maintien des installations de navigateurs. Le temps est également sauvé de les tracas de la mise en place et configuration TestSwarm.

Jasmin

Jasmine

C'est côté client de test-coureur qui pourrait intéresser les développeurs familiers avec Ruby et Ruby on Rails. La syntaxe est basée sur RSpec qui est utilisé pour les tests dans les Rails des projets.

Jasmine est une behavior-driven development framework pour tester votre code JavaScript. Il ne dépend pas des autres frameworks JavaScript. Il ne nécessite pas un DOM.

Si vous avez de l'expérience avec ce test-coureur, merci de contribuer avec plus d'info :)

Accueil du projet: http://jasmine.github.io/

QUnit

QUnit se concentre sur les tests de JavaScript dans le navigateur, tout en offrant un maximum de confort pour le développeur que possible. Texte de présentation sur le site:

QUnit est un puissant, facile à utiliser JavaScript tests unitaires. Il est utilisé par le jQuery, jQuery UI et jQuery Mobile des projets, et est capable de tester tous les génériques de code JavaScript

QUnit actions un peu d'histoire avec TestSwarm (ci-dessus):

QUnit a été développé à l'origine par John Resig dans le cadre de jQuery. En 2008, elle a obtenu son propre domicile, le nom et la documentation de l'API, permettant à d'autres de les utiliser pour leurs tests unitaires. À l'époque il encore dependended sur jQuery. Une réécriture en 2009 fixe, maintenant, QUnit s'exécute completelty autonome. QUnit de méthodes d'assertion suivez les CommonJS Unité des spécifications d'Essai, qui a été dans une certaine mesure influencé par QUnit.

Accueil du projet: http://qunitjs.com/

Sinon

Un autre outil intéressant est sinon.js par Christian Johansen, l'auteur du Test-Driven Développement JavaScript. Le mieux décrit par lui-même:

Test autonome des espions, des talons et se moque de pour le JavaScript. Pas de dépendances, travaux avec n'importe quel framework de test unitaire.

Test-Driven JavaScript Developmenthttp://tddjs.com/

1 votes

@gregers: non, c'était en panne quand j'ai écrit ce commentaire et c'est toujours en panne maintenant. downforeveryoneorjustme.com/http://testswarm.com

0 votes

@broofa Merci pour l'information, mais il s'agit de l'instance TestSwarm pour jQuery. Le projet GitHub est plus utile pour ceux qui veulent configurer TestSwarm pour leur propre projet.

2 votes

Jasmine peut fonctionner en mode headless en utilisant V8, mais vous pouvez aussi l'utiliser de manière interactive. Bien que le DOM ne soit pas nécessaire en ce qui concerne Jasmine, votre base de code pourrait accéder au DOM. Avec de la discipline, il est possible d'éliminer, de protéger avec des conditions, ou de fournir des mocks pour les parties du code qui accèdent au DOM et d'exécuter des tests complètement séparément des éléments HTML. Vous pouvez également obtenir un support en ligne de commande et des fixtures en utilisant des modules complémentaires.

64voto

Eugene Lazutkin Points 22414

Jetez un coup d'œil sur le framework de test unitaire Dojo Object Harness (DOH) qui est un harnais assez indépendant du framework pour les tests unitaires JavaScript et n'a pas de dépendances de Dojo. Il y a une très bonne description à Test unitaire des applications Web 2.0 en utilisant le Dojo Objective Harness.

Si vous souhaitez automatiser les tests d'interface utilisateur (un point critique pour de nombreux développeurs) — consultez doh.robot (temporairement indisponible. mise à jour: autre lien http://dojotoolkit.org/reference-guide/util/dohrobot.html ) et dijit.robotx (temporairement indisponible). Ce dernier est conçu pour les tests d'acceptation. Mise à jour:

Les articles référencés expliquent comment les utiliser, comment émuler un utilisateur interagissant avec votre interface utilisateur à l'aide de la souris et/ou du clavier, et comment enregistrer une session de test, afin de pouvoir la "jouer" automatiquement ultérieurement.

0 votes

Merci pour la suggestion de Dojo Object Harness, je ne l'aurais jamais trouvée. J'apprécie les autres suggestions - mais une étape à la fois.

0 votes

J'ai réellement utilisé ceci dans un projet précédent, et l'ai trouvé inestimable. Mais encore une fois, je ne peux pas comparer - n'ai pas utilisé d'autres frameworks TDD.

0 votes

Merci d'avoir signalé les liens morts. J'ai mis à jour l'un d'entre eux et je remplacerai les liens vers la documentation des robots dès qu'ils seront disponibles sur un nouveau site web.

35voto

Matthew Manela Points 9610

Chutzpah - Un exécuteur de tests JavaScript

J'ai créé un projet open source appelé Chutzpah qui est un exécuteur de tests pour les tests unitaires JavaScript. Chutzpah vous permet de lancer des tests unitaires JavaScript depuis la ligne de commande et depuis Visual Studio. Il prend également en charge l'exécution dans le serveur d'intégration continue TeamCity.

7 votes

Je viens de commencer à utiliser Chutzpah pour exécuter des tests Jasmine à l'intérieur de Visual Studio - c'est bien intégré : cliquez avec le bouton droit dans le fichier de test et choisissez 'exécuter les tests js' ou 'exécuter les tests JS dans le navigateur'. J'exécute les mêmes tests jasmine en utilisant JSTestDriver. Je préfère Chutzpah parce que je spécifie quels fichiers je dépends d'être chargés en haut du fichier de test. Pour JSTestDriver, j'ai besoin d'un fichier de configuration séparé.

28voto

Pete TerMaat Points 2135

La section JavaScript de l'entrée Wikipedia, Liste des cadres de test unitaire, fournit une liste des choix disponibles. Il indique s'ils fonctionnent côté client, côté serveur ou les deux.

15voto

Tauren Points 9324

BusterJS

Il y a aussi BusterJS de Christian Johansen, l'auteur de Développement de logiciels Javascript Guidé par les Tests et du framework Sinon. Du site :

Buster.JS est un nouveau framework de tests JavaScript. Il effectue des tests de navigateur en automatisant les exécutions de tests dans de vrais navigateurs (pensez à JsTestDriver), ainsi que des tests Node.js.

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