それぞれの長所と短所は何ですか Behavior Driven Development (BDD)Javaのフレームワーク?
それらのいくつかを見つけました ここ 、例えば。
モックライブラリを既に使用している場合、BDDフレームワークを使用するのは理にかなっていますか(例 Mockito )?
Java用の3つのBDDフレームワークを比較しました。明らかに、私の調査結果の使用期限はかなり短いです。
Cuke4Duke of JDaveを試してみる機会はありませんでしたが、現時点ではJBehaveをプッシュするでしょう。
「賛否両論」は、人によって異なる場合があります。私は通常見て
そして、いくつかのフレームワークから私は見ていた
モックについて:モックフレームワークも間違いなく必要です。 BDDフレームワークは仕様の作成に役立ちますが、一部のテストではモックまたはスタブが必要になります。トップダウンで設計するとき(概要から詳細まで)。
Javaで使用するのに最適なBDDフレームワークは何ですか?どうして?各フレームワークの長所と短所は何ですか?
Concordion vs. Cucumber and Java based Acceptance Testing に関する興味深いリンクがあります
私はここでそれらのカップルを見つけましたが、どれを選ぶべきか分かりません。
本当に、上記のものを見てください。
既にモックライブラリ(Mockitoなど)を使用している場合、BDDフレームワークを使用する意味がありますか?
簡単な答え:はい、間違いなく。実際、BDDフレームワークを使用した受け入れテストと、モックオブジェクトを使用した単体テストは非常に異なるため、実際には質問がありません。受け入れテストはブラックボックステストです。テストは、ビジネス機能が機能していることを確認するために使用され、理想的にはビジネスアナリストによって作成されます。モックを使用した単体での単体テストはホワイトボックステストです。テストは、ユニットが機能していることを確認するために使用され、開発者によって作成されます。どちらも便利ですが、まったく異なる目的を持っています。つまり、Mockitoを使用してもBDDフレームワークはまったく置き換えられず、その逆も当てはまります。
私はもともとプレーンなjUnitでBDDを実行しましたが、最近jUnitで行っていたこととほぼ1:1であるため、 JDave を見てきました。また、jUnitの上で実行されるため、すでにEclipseで動作し、Hudsonなどの継続的統合システムで動作するように構成するのも簡単です。他の人と実際に比較することはできませんが、JDaveでの私の経験は今のところ良好です。
ああ、モックを使用することは決して愚かな考えではありません!それらは特にTDD/BDDに結び付けられているのではなく、それらの目的は一般的なテストの負担を軽減することです。
うわー、トピックは暑くて、たくさんの良い答えがあります...
皮肉なことに、私は最近BDDを発見し、この概念が興味深いことに気付きました。ねえ、それはテストと仕様の両方を書くことを強制します!意外に思えるかもしれませんが、一部のプロジェクトでは後者が欠落している可能性があります...または、BDDが強制的に導入する精度が不足しています。
Behavior Driven Development の記事は、コンセプトといくつかの優れた記事(Andrew Gloverによって書かれたものなど)へのリンクをまとめたものです。さらに、このスレッドのトピックについては、かなり包括的な(おそらく)BDDフレームワークのリストを提供しますが、その多くはJava用です。
フレームワークを選択する問題は解決しませんが、少なくとも検索は容易になります...
BDDはテストコードの可読性に大きく依存しているため、選択の良い基準は、クイックツアー/チュートリアルを見て、どちらが自分のスタイルに合っているかを確認することだと思います。他の基準としては、フレームワークが使い慣れたツールを活用するという事実(単体テスト、モック)、IDEでの使用などがあります。
Cucumber-JVM (以前はCuke4Dukeとして開発されていました)を試しました。仕様にはGherkin DSLを使用し、プレーンテキストとして保存します。
JUnitテストとして実行できます。そのため、使用を開始するための唯一の問題は、ビジネスマンまたはプロダクトマネージャーがソースの.featuresを読み書きできるようにすることです。
結果
私のチームはJBehaveを成功裏に使用しました。EasyBを使用してからJBehaveに移行し、プレーンテキストシナリオファイルの方が扱いやすいことがわかりました。
私のチームはしばらくの間 JBehave を使用しています。プレーンテキストファイルを使用して仕様を保存します。すべてのステップ(Given、When、Then)は、ステップからパラメーターを抽出できる特定のメソッドによって実行されます。シナリオはインデントされ、適切にフォーマットされているため、クライアントがそれらを検証したい場合に役立ちます。
いくつかの問題もあります。 Java 6.に切り替えました。実行中にいくつかのシナリオのステップが無視される場合があります。バグの原因を突き止めるのに多くのトラブルを引き起こす可能性があります。