Java用の各BehaviorDrivenDevelopment(BDD)フレームワークの長所と短所は何ですか?
たとえば、ここでそれらのいくつかを見つけました。
すでにモックライブラリ( Mockitoなど)を使用している場合、BDDフレームワークを使用するのは理にかなっていますか?
Java用の各BehaviorDrivenDevelopment(BDD)フレームワークの長所と短所は何ですか?
たとえば、ここでそれらのいくつかを見つけました。
すでにモックライブラリ( Mockitoなど)を使用している場合、BDDフレームワークを使用するのは理にかなっていますか?
Java 用の 3 つの BDD フレームワークの比較が完了しました。明らかに、私の調査結果は使用期限がかなり短いです。
私は、JDave の Cuke4Duke を試す機会がありませんでしたが、現時点ではおそらく JBehave を推し進めるでしょう。
「長所と短所」は人によって異なる場合があります。普段はちょくちょく見てます
そして、私が見たいくつかのフレームワークから
モックについて: モック フレームワークも必ず必要です。BDD フレームワークは単に仕様を記述するのに役立ちますが、一部のテストではモックやスタブが必要になります。トップダウンで設計する場合 (概要から詳細まで)。
Java で使用するのに最適な BDD フレームワークは何ですか? なんで?各フレームワークの長所と短所は何ですか?
Concordion vs. Cucumber および Java ベースの受け入れテストに関する興味深いリンクを次に示します。
ここでそれらのいくつかを見つけましたが、どれを選択すればよいかわかりません。
実際、上記のものを見てください。
すでにモッキング ライブラリ (Mockito など) を使用している場合、BDD フレームワークを使用する意味はありますか?
Short answer: yes, definitely. Actually, acceptance testing using a BDD framework and unit testing in isolation using mock objects are so different that I don't really get the question. Acceptance testing is black box testing, tests are used to verify that a business feature is working and are ideally written by business analyst. Unit tests in isolation using mocks is white box testing, tests are used to verify that a unit is working and are written by developers. Both are useful buty they have totally different purposes. In other words, using Mockito doesn't replace a BDD framework at all and the inverse is also true.
私はもともとプレーンな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 に切り替えました。実行中に一部のシナリオ ステップが無視されることがあります。バグがどこにあるのかを突き止めるのに多くの問題が発生する可能性があります。