121 votes

Quelles sont les différences entre les cadres BDD pour Java ?

Quels sont les avantages et les inconvénients de chaque cadre Behavior Driven Development (BDD) pour Java ?

J’ai trouvé quelques unes ici, par exemple.

Est-il judicieux d’utiliser un framework BDD si j’utilise déjà une bibliothèque moqueuse (p. ex. Mockito) ?

99voto

Caoilte Points 1268

Je viens de terminer la comparaison de trois BDD cadres pour Java. Évidemment, mes résultats ont une assez courte date limite d'utilisation.

Concordion

  • Très flexible
  • Très jolie la sortie du rapport
  • Joli plugin cadre
  • Mal documentée. J'ai eu à lire la source de la figure (heureusement, sa très bonne qualité).
  • Luminaires semblait susceptible de se retrouver étroitement couplée pour la html.

EasyB

  • Très faible courbe d'apprentissage (même pour les non-Groovy Développeurs)
  • Extrêmement puissant DBUnit intégration
  • Apparemment pas de support pour les paramètres (conduit soit très vague des histoires ou des chevauchements entre le texte et le code (edit: en fait il y est, mais la documentation est très bien caché.)
  • Histoire et Code sont très étroitement liés (même fichier)
  • Très de base de la sortie du rapport
  • N'a pas pu obtenir IntelliJ plugin fonctionne
  • Inactif communauté (Maven plugin semble avoir été cassé pour trois mois - pas de nombreux exemples de code pour dessiner sur)

JBehave

  • Extrêmement puissant et flexible (par exemple la réduction de la chaudière-plaque au travers de la composition des histoires, comme pré-requis)
  • Vaste (fragmentation) de la documentation et des exemples
  • Vaste (si écrasante) prise en charge de différents cadres et des environnements
  • Excellente séparation de l'histoire des fichiers de code
  • Ressemble à une jolie communauté active et beaucoup plus d'exemples et discussion à ce sujet sur le web.
  • Tout à fait une courbe d'apprentissage abrupte (m'a fallu 3 à 4 fois plus de temps pour comprendre que Concordion/EasyB)

Je n'ai pas eu la chance d'essayer Cuke4Duke de JDave comme je l'aurais aimé, mais va probablement pousser pour JBehave en ce moment.

36voto

Peter Kofler Points 4421

"avantages et inconvénients" peut-être des choses différentes pour différentes personnes. J'ai l'habitude de regarder

  • développement de l'activité, par exemple, sont de nouvelles versions de chances ou est la dernière version de 2 ans.
  • la maturité, par exemple, combien de temps il a été autour, il y a des tutoriels et peut-être même des livres disponibles. (Je n'ai pas lu ces livres, c'est juste un signe de l'adoption.)
  • le support de l'outil, par exemple, est-il un plugin Eclipse, Ant, etc
  • la taille des dépendances, je n'aime pas les cadres qui viennent avec tout ce qui leur est propre. par exemple, je veux choisir mon moqueur cadre moi-même.
  • type de licence, ce qui est important pour moi parce que des termes juridiques dans la société où je travaille.
  • compatibilité avec les outils connexes, par exemple, qu'il n'utilise Cornichon de langue ou pas.

Et de certains cadres, j'ai eu un coup d'oeil à

  • L'Instinct mauvais: dernière activité Mar 2010, bon: ASF licence
  • JDave mauvais: est livré avec les allumettes et les mocks, la bonne: dernière activité Jan 2011, ASF licence
  • easyb mauvais: dernière activité Oct 2010, pas sûr: il utilise Groovy. Cela peut être ok, mais serait un problème pour l'adoption dans mon cas.
  • beanspec mauvais: une seule version en 2007, c'est mort
  • bdoc mauvais: dernière activité Jan 2010, pas sûr: on dirait d'aller dans l'autre sens, la création d'un rapport à partir du code.
  • spock mal: peut-être un peu extrême, c'est un framework de test, non seulement BDD, bon: très actif, très cool.
  • jbehave, la "mère" de toutes les BDD en Java, mauvais: très puissant = complexe, incompatible licence (pour moi), est livré avec presque tous les tests de la bibliothèque et bien plus de, la bonne: sur la base des RSpec et donc compatible, des plugins eclipse, maven, intégration, de la communauté très active

Concernant les objets fantaisie: Vous avez certainement besoin d'un moqueur cadre. La BDD cadres de vous aider dans la rédaction du cahier des charges, mais certains tests devront se moque ou des talons, esp. lors de la conception de haut en bas (à partir de la vue d'ensemble au détail).

20voto

Pascal Thivent Points 295221

Quelle est la meilleure BDD cadre d'une utilisation avec Java? Pourquoi? Quels sont les avantages et les inconvénients de chaque cadre?

Voici un lien intéressant sur Concordion vs Concombre et Java de Tests d'Acceptation

J'ai trouvé quelques-uns ici, mais je ne sais pas lequel choisir.

Vraiment, regardez la personne mentionnée ci-dessus.

Est-il judicieux d'utiliser une BDD cadre si j'ai déjà utiliser un moqueur de la bibliothèque (par exemple, Mockito)?

Réponse courte: oui, certainement. En fait, les essais d'acceptation à l'aide d'une BDD cadre des tests unitaires et dans l'isolement à l'aide d'objets fantaisie sont tellement différents que je ne comprends pas trop la question. Test d'acceptation est la boîte noire de test, les tests sont utilisés pour vérifier que l'entreprise fonctionnalité est travail et, idéalement, sont écrits par l'analyste d'affaires. Les tests unitaires dans l'isolement à l'aide se moque de est tests en boîte blanche, des tests sont utilisés pour vérifier que l'appareil fonctionne et qui sont écrites par les développeurs. Les deux sont utiles buty ils ont totalement différentes fins. En d'autres termes, à l'aide de Mockito ne remplace pas une BDD cadre du tout et l'inverse est également vrai.

7voto

Esko Points 15578

J'ai d'abord fait ma BDD avec la plaine jUnit, mais j'ai été à la recherche à JDave ces derniers temps parce que c'est près de 1:1 jusqu'à ce que je faisais avec jUnit. Il fonctionne également sur le dessus de jUnit, de sorte qu'il fonctionne déjà sur Eclipse et est aussi facile à configurer pour travailler sur l'intégration continue des systèmes tels que Hudson. Ne peut pas vraiment le comparer avec les autres, mais mes expériences avec JDave ont été bonne jusqu'à présent.

Oh, et il n'est jamais une idée stupide d'utiliser des objets fantaisie! Ils ne sont pas liés aux TDD/BDD précisément, leur but est d'alléger le fardeau des tests en général.

6voto

PhiLho Points 23458

Wow, je vois que le sujet est chaud, beaucoup de bonnes réponses...

Ironie à part, j'ai récemment découvert BDD et trouvé le concept intéressant. Hey, il oblige à écrire à la fois des tests... et spécifications! Aussi surprenant que cela puisse paraître, ce dernier peut être aussi absente dans certains projets,... Ou tout simplement le manque de précision qui BDD forces à mettre en place.

Le Comportement du Développement Piloté par l'article résume le concept et des liens vers quelques bons articles (comme celui écrit par Andrew Glover). En outre, le sujet de ce fil, il donne un ensemble assez complet (je suppose) la liste des BDD cadres, un bon nombre d'entre eux étant pour Java.
Ça ne résout pas le problème du choix du cadre, mais au moins il sera plus facile de la recherche...

Depuis la BDD s'appuie fortement sur la lisibilité de code de test, je suppose un bon critère de choix, c'est de regarder le quick tours/tutoriel et voir ce qui semble le plus adapté à votre style. D'autres critères pourraient être le fait d'un cadre à profit des outils vous sont familiers avec (test unitaire, en se moquant), utilisation avec l'IDE, et ainsi de suite.

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