web-dev-qa-db-ja.com

JBehaveとCucumberの違いは何ですか?

JBehaveは実際にはCucumberに相当するJavaであるが、CucumberはRubyに基づいているということです。

誰かがそれらの違いを説明できるリンクを提供できますか?

61
Manoj

JBehaveとCucumberはまったく同じフレームワークですが、受け入れテストという同じ目的のためのものです。それらはストーリー(JBehave)または機能(Cucumber)に基づいています。機能とは、特定のプロジェクト関係者の観点から表現されたストーリーのコレクションです。テストでは、通常、正規表現のマッチングを介して、ストーリーを参照しています。

JBehaveは純粋なJavaフレームワークですが、CucumberはRubyをベースにしています。どちらも非常に成熟したフレームワークです。Javaから Maven からのCuke4Duke Mavenプラグインですが、内部でRuby=を使用し続けているため、この言語とそのインフラストラクチャをインストールする必要があるため、言語の不一致が残っています(テストを実行するマシン上で「gems」と呼ばれます。これは脆弱である可能性があり、言語の不一致によりデバッグが複雑になり、テストのパフォーマンスが低下します。現在、Cucumberの純粋なJavaこれは Cucumber-JVM と呼ばれます。2011年12月の時点ではまだリリースされていませんが、完全に使用可能です(edit: version 1.0.0はリリース 2012年3月27日)。この新しいフレームワークは、どちらもネイティブJUnitをサポートしているため、JBehaveに非常に似ています。

以下は、Cucumber-JVMとJBehaveの比較です。

類似点:

  • すぐに使えるJUnitサポート
  • 純粋なJava
  • 速い
  • 使いやすい

JBehaveの長所/短所:

  • Pro非常に優れたドキュメント
  • Proテスト結果のかなり良いHTMLフォーマット
  • Conストーリーのみをサポートし、機能はサポートしません

Cucumber-JVMの長所/短所:

  • Pro機能をサポート
  • Con並列JUnitテストはサポートしていません。ただし、並列Maven 3ビルドでは機能します。
  • Conドキュメントの欠如
  • ConJUnit独自のフォーマット以外の、テスト結果のきれいなHTMLフォーマットはありません (編集:Cucumber-JVMはHTML出力をサポートするようになりました)

Javaプロジェクトの場合は、JBehave(優れたドキュメントを探している場合)またはCucumber-JVM(代わりに機能またはストーリーのサポートが重要な場合)をお勧めします。

私は両方のフレームワークを試し、Cucumber-JVMを探しました。

102
cgleissner

Cucumber JVMは、上記の回答で述べたように、人気のあるCucumber BDDツールのJava実装です。

JBehaveには、好みに応じてBDDツールを微調整するための多くの追加構成があります。しかし、これらの構成には非常に複雑なものもあります。一日の終わりに、私たちはアジャイルになり、仕事にリーンであることを愛しています。自分から尋ねるべき質問は、これらの複雑な構成がワークフローに大きな価値を追加するかどうかです。 CucumberやJBehaveのような強力なツールがなくても、BDDを実行している人々を見てきました。独自のツールを作成する人もいます。私の観察では、BDDツールが必要な場合、Cucumberには必要なほとんどすべてのパワーがあります。

詳細については、私が書いた次のブログ記事をご覧ください。 JBehave Vs Cucumber JVM:比較と経験の共有

P. S. Stackoverflowは、ツールに関する主観的な質問をするのに最適なコミュニティではないと感じています。とにかく、この議論が誰かに役立つことを願っています。

いいえ、実際には、Javaキュウリに相当するものは Cucumber-JVM です。これらの違いを理解するには、これを確認する必要があります リンク 2つの有名なBDDフレームワーク。

3
Karthikeyan

受け入れられた答えが示すように、 JBehave は純粋なJavaですが、 Cucumber はさまざまな言語で実装され、さまざまなテストフレームワークとして利用できる一般化されたBDDフレームワークです異なるコンテキスト-ここを参照してください https://docs.cucumber.io/installation/

JavaプロジェクトにBDDフレームワークを実装する場合、主にJBehaveとCucumber-JVM(純粋なJava実装キュウリの)。

この2017年7月の最新の参照では、JBehaveとCucumber-JVMを比較しており、cucumber-jvmが現在一般的にJBehaveより優先されていることを示しています(現在の程度に関して)アクティビティと使用法)。これには、より積極的に保守されるCucumber-JVMが含まれます。

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

また、この記事の結論には次のことが記載されています。

私の理解では、JBehaveはそのライフサイクルの成熟段階にありますが、Cucumberはまだクールな新機能を毎日使用して成熟レベルに到達しています。

この記事では、次の点でCucumber-jvmのスコアを全体的に高くしています

  • ドキュメントとコミュニティ
  • 機能(下記のメモを参照)
  • 報告書
  • GitHubでの人気、コード品質、現在のアクティビティ
  • StackOverflowのアクティビティ

機能に関する注意:

この記事では、Cucumber-JVMの機能を、比較する機能セット全体でより高く評価していますが、特定の機能に与える重み付けは、特定のニーズによって異なります。

  • 記事は、Cucumber-JVMを次のように高く評価しています:

    • IDEプラグイン(構文の強調表示)
    • フォーマットの柔軟性
    • ラムダ式のサポート
  • 記事のレートは、次の場合にJBehaveが高くなります:

    • 外部データのサポート
    • 複合ステップ(これは、Cucumber-JVMのサポートが低いと評価され、以下の説明があります):
    • 複合ステップは、BDD/Gherkin Standardの機能ではありません。

    • ...主な理由は、この機能を使用した人々が、壊れやすく保守が難しい厄介な自動化コードに頻繁になってしまったことです。

  • 記事は、以下についてもjbehaveとCucumber-JVMを評価しています:

    • 背景とフック
    • コードへのバインド(注釈)

JBehaveの機能:

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

1
Chris Halcrow