web-dev-qa-db-fra.com

Quelles sont les différences entre JBehave et Cucumber?

J'ai lu quelque part que JBehave est en réalité l'équivalent Java de Cucumber, alors que Cucumber est basé sur Ruby.

Quelqu'un peut-il décrire les différences entre eux fournir des liens qui font?

59
Manoj

JBehave et Cucumber sont des cadres complètement différents, bien que destinés au même but: les tests d'acceptation. Ils sont basés sur des histoires (JBehave) ou des fonctionnalités (Concombre). Une fonctionnalité est une collection d'histoires, exprimées du point de vue d'un acteur spécifique du projet. Dans vos tests, vous faites référence aux histoires, généralement via une correspondance d'expression régulière. 

JBehave est un framework Java pur alors que Cucumber est basé sur Ruby. Les deux sont des cadres très matures. Vous pouvez utiliser Cucumber à partir de Java via le plugin Cuke4Duke Maven de Maven , mais il existe toujours une différence de langue car il continue à utiliser Ruby en interne et vous devrez installer ce langage et son infrastructure (les "gems" ) sur la machine qui exécute vos tests. Cela peut être fragile et l'inadéquation de la langue complique à la fois le débogage et entrave les performances de vos tests. Il existe maintenant une implémentation Java pure de Cucumber qui s'appelle Cucumber-JVM . En Décembre 2011, il n'est pas encore sorti, mais parfaitement utilisable (edit: la version 1.0.0 est sortie le 27 mars 2012). Ce nouveau framework est très similaire à JBehave car les deux ont un support natif de JUnit.

Ce qui suit est une comparaison entre Cucumber-JVM et JBehave.

Similitudes:

  • Support JUnit prêt à l'emploi
  • Pure Java
  • Vite
  • Facile à utiliser

Avantages/inconvénients de JBehave:

  • Pro Très bonne documentation
  • Pro Très bon formatage HTML des résultats de test
  • Con Ne supporte que les histoires, pas les fonctionnalités

Avantages/inconvénients de concombre-JVM:

  • Pro Prise en charge des fonctionnalités 
  • Con Ne supporte pas les tests JUnit parallèles. Cela fonctionnera cependant avec les versions parallèles de Maven 3.
  • Con Manque de documentation
  • Con Pas de jolie mise en forme HTML des résultats de test, autre que la propre mise en forme de JUnit (edit: Cucumber-JVM supporte maintenant la sortie HTML))

Si vous êtes sur un projet Java, je vous recommanderais soit JBehave (si vous recherchez une excellente documentation) ou Cucumber-JVM (si le support de fonctionnalités ou d'histoires est important pour vous). 

J'ai essayé les deux frameworks et je suis allé chercher Cucumber-JVM. 

98
cgleissner

Concombre JVM est l'implémentation Java du populaire outil Cucumber BDD, comme indiqué dans les réponses ci-dessus. 

JBehave a de nombreuses configurations supplémentaires pour ajuster un outil BDD selon vos préférences. Mais avec ces configurations, il y a aussi une grande complexité. À la fin de la journée, nous allons de manière agile et nous aimons être minces dans notre travail. La question que vous devriez vous poser vous-même est de savoir si ces configurations complexes ajoutent une valeur significative à votre flux de travail. J'ai vu des gens faire BDD même sans un outil puissant comme Cucumber ou JBehave. Certains créent également leurs propres outils. Mon observation était que, si vous avez besoin d'un outil BDD, Cucumber a presque toute la puissance dont vous avez besoin.

Pour plus d'informations, vous pouvez lire cet article de blog écrit par moi: JBehave Vs Cucumber JVM: comparaison et partage d'expérience

P. S. Je pense que Stackoverflow n'est pas la meilleure communauté pour poser des questions subjectives sur les outils. Quoi qu'il en soit, espérons que cette discussion sera utile à quelqu'un.

3

Non, en réalité, l'équivalent Java du concombre est Cucumber-JVM . Vous devrez peut-être aussi vérifier ceci Lien pour comprendre la différence entre ces deux fameux frameworks BDD.

3
Karthikeyan

Comme le dit la réponse acceptée, JBehave est pur Java, alors que Cucumber est un framework BDD généralisé implémenté dans différentes langues et pouvant être mis à disposition en tant que framework de test dans différents contextes - voir ici https://docs.cucumber.io/installation/ .

Si vous souhaitez implémenter un framework BDD pour un projet Java, votre comparaison doit principalement porter sur JBehave et Cucumber-JVM (l'implémentation Java pure de Cucumber). 

Cette référence suivante mise à jour depuis juillet 2017 compare JBehave et Cucumber-JVM et indique que concombre-jvm est actuellement généralement étant préféré à JBehave (en termes de degré d'activité et d'utilisation actuelle). Ceci inclut Cucumber-JVM étant maintenu plus activement:

https://medium.com/agile-vision/jbehave-vs-cucumber-jvm-comparison-and-experience-sharing-439dfdf5922d

L'article stipule également que:

Selon ma compréhension, JBehave est dans la phase de maturité de son cycle de vie, alors que Cucumber atteint toujours le niveau de maturité avec de nouvelles fonctionnalités sympas, jour après jour.

Cucumber-Jvm se classe plus globalement pour les aspects suivants:

  • Documentation et communauté
  • Caractéristiques (voir ma note ci-dessous)
  • Rapports
  • Popularité, qualité du code et activité actuelle sur GitHub
  • Activité sur StackOverflow

Note sur les fonctionnalités:

L'article attribue une note plus globale aux fonctionnalités de concombre-machine virtuelle Java pour l'ensemble de fonctionnalités qu'il compare, mais la pondération que vous pouvez attribuer à certaines fonctionnalités dépend de vos besoins spécifiques:

  • L'article attribue à Cucumber-JVM une note supérieure pour les éléments suivants:

    • Plugin IDE (mise en évidence de la syntaxe)
    • Flexibilité de formatage
    • Prise en charge de l'expression lambda
  • L'article note JBehave plus élevé pour ce qui suit:

    • Prise en charge des données externes
    • Étapes composites (il est évalué comme ayant un support faible dans concombre-machine virtuelle Java, avec les notes explicatives suivantes):
    • Les pas composites ne sont pas une fonctionnalité de BDD/Gherkin Standard.

    • La raison principale en était que les utilisateurs de cette fonctionnalité se retrouvaient souvent avec un code d'automatisation complexe, fragile et difficile à gérer.

  • L'article classe jbehave et Cucumber-JVM de la même manière pour les éléments suivants:

    • Arrière-plans et crochets
    • Liaison au code (annotations)

JBehave propose:

https://jbehave.org/reference/stable/features.html

0
Chris Halcrow