66 votes

Quelles sont les différences entre JBehave et Cucumber ?

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

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

105voto

cgleissner Points 611

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

JBehave est un framework purement Java alors que Cucumber est basé sur Ruby. Les deux sont des frameworks très matures. Vous pouvez utiliser Cucumber à partir de Java via la fonction Plugin Maven Cuke4Duke de Maven Vous devrez donc installer ce langage et son infrastructure (les "gems") sur la machine qui exécute vos tests. Cela peut être fragile et le décalage de langage complique à la fois le débogage et les performances de vos tests. Il existe maintenant une implémentation purement Java de Cucumber qui s'appelle Cucumber-JVM . En décembre 2011, il n'est pas encore publié, mais parfaitement utilisable. (éditer : La version 1.0.0 a été publiée le 27 mars 2012) . Ce nouveau cadre est très similaire à JBehave car tous deux ont un support natif de JUnit.

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

Des similitudes :

  • Prise en charge de JUnit dès le départ
  • Pure Java
  • Rapidement
  • Facile à utiliser

Avantages et inconvénients de JBehave :

  • Pro Très bonne documentation
  • Pro Assez bon formatage HTML des résultats des tests
  • Con Ne prend en charge que les histoires, pas les fonctionnalités

Avantages et inconvénients de Cucumber-JVM :

  • Pro Fonctions de soutien
  • Con Ne prend pas en charge les tests JUnit parallèles. Fonctionne cependant avec les constructions parallèles de Maven 3.
  • Con Manque de documentation
  • Con Pas de formatage HTML des résultats des tests, autre que le formatage propre à JUnit. (edit : Cucumber-JVM supporte maintenant la sortie HTML)

Si vous travaillez sur un projet Java, je vous recommande soit JBehave (si vous recherchez une documentation de qualité), soit Cucumber-JVM (si la prise en charge des fonctionnalités ou des histoires est importante pour vous).

J'ai essayé les deux frameworks et j'ai opté pour Cucumber-JVM.

1 votes

Bonjour cgleissner, Merci beaucoup. En effet, un rapport détaillé m'a aidé à comprendre. Merci encore pour vos efforts. +1 Salutations,

11 votes

J'ai dû passer de Cucumber à JBehave parce que Cucumber-JVM n'est pas pris en charge par l'outil Sonar.

0 votes

Belle réponse, bien expliquée

4voto

Cucumber JVM est l'implémentation Java du célèbre outil BDD Cucumber, comme mentionné dans les réponses ci-dessus.

JBehave offre de nombreuses configurations supplémentaires pour affiner un outil BDD selon vos préférences. Mais ces configurations s'accompagnent d'une grande complexité. En fin de compte, nous allons Agile et nous aimons être Lean dans notre travail. La question que vous devriez vous poser est de savoir si ces configurations complexes ajoutent une valeur significative à votre flux de travail. J'ai vu des gens faire du 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 en savoir plus, vous pouvez lire cet article de blog que j'ai rédigé : 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, j'espère que cette discussion sera utile à quelqu'un.

4voto

Chris Halcrow Points 907

Comme l'indique la réponse acceptée, JBehave est purement Java, tandis que Concombre est un cadre BDD généralisé qui est mis en œuvre dans différents langages et qui peut être mis à disposition en tant que cadre de test dans différents contextes (voir ici). https://docs.cucumber.io/installation/ .

Si vous cherchez à mettre en œuvre un cadre BDD pour un projet Java, votre comparaison doit se faire principalement entre JBehave et Cucumber-JVM (l'implémentation purement Java de Cucumber).

La référence suivante, mise à jour en juillet 2017, compare JBehave et Cucumber-JVM, et indique que cucumber-jvm est actuellement généralement étant préféré à JBehave (en termes de degré d'activité et d'utilisation actuels). Cela inclut le fait que Cucumber-JVM est plus activement maintenu :

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

L'article indique également dans sa conclusion que :

D'après ce que j'ai compris, JBehave est dans la phase de maturité de son cycle de vie, tandis que Cucumber atteint toujours le niveau de maturité avec de nouvelles fonctionnalités intéressantes au jour le jour.

L'article donne une meilleure note à Cucumber-jvm 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 caractéristiques :

L'article donne une meilleure note aux fonctionnalités de Cucumber-JVM pour l'ensemble des fonctionnalités qu'il compare, mais la pondération que vous pouvez donner à certaines fonctionnalités dépendra de vos besoins spécifiques :

  • L'article donne une meilleure note à Cucumber-JVM pour les points suivants :

    • Plugin IDE (coloration syntaxique)
    • Flexibilité du formatage
    • Prise en charge des expressions lambda
  • L'article donne une meilleure note à JBehave pour les raisons suivantes :

    • Support de données externes

    • Composite Steps (cette option est considérée comme ayant un faible support dans Cucumber-JVM, avec les notes explicatives suivantes) :

    • Les étapes composées ne sont pas une caractéristique de BDD/Gherkin Standard.

    • ... La raison principale était que les personnes qui utilisaient cette fonctionnalité se retrouvaient souvent avec un code d'automatisation désordonné, fragile et difficile à maintenir.

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

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

Caractéristiques de JBehave :

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

3voto

Karthikeyan Points 636

Non, en fait, 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 célèbres frameworks BDD.

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