JBehave紹介JBehaveはJavaで書かれたBDD(Behavior-driven-Design)フレームワーク、java界のCucumberです.(注:1、BDDの主な目的は、技術者と業務分野の専門家とのコミュニケーションの問題を解決するために、業務分野の専門家の視点からテスト用例を作成することである.2、CucumberはRubyベースのBDDフレームワークである) JBehaveの特徴1)、純Java実装でjava APIを呼び出せる場所で利用できます.2)、テキストベースのStoryを定義して実行することができ、ユーザー価値から開発することができます.(BDDはいずれもこの目的である).3)、User storiesはclasspathに入れてもよいし、外部URLから入れてもよい.4)、User storiesは同時実行可能で同時実行可能なスレッド数を指定できる.5)、一部のユーザ定義の情報でUser Storiesを完全なドキュメントにすることができる.6)、AnotationによってStoryのステップをJavaクラスに対応させることができる.動的にStoryのStringパラメータをメソッドに対応するパラメータタイプに変換します.(How?)7)、Anotationの実行構成情報に基づき、Storyに対応するStepクラスファイルを指定する8)、サードパーティIOCコンテナ(Spring,Guice,PicoContainer,Weld)による構成情報とStepクラス9の管理をサポートする9)、Groovyによる構成情報の書き込みとStepファイル10のサポートを行うことにより、可読性の良いレポートフォーマットを生成することができる(HTML、TXT)は、Json、XML形式の外部プログラム呼び出しもサポートしている.11)、実装されていないステップはPending 12を自動的にマークする)、任意の言語でStory 13を書くことをサポートする)、Junitまたは任意のanotationベースのテストフレームワークでStoryテスト14を実行することができる)、Maven、Ant統合をサポートし、スクリプトでBDDテストスクリプトを実行する. JBehaveの構造Story:システムが持ちたい機能Scenario:Storyが記述する機能のKey-EXample.一つの機能が良い例を考え出せない場合は、この機能の価値をよく考えなければなりません.個人的には、ここでは『Specification By Examples』のアイデアを借りて、機能が理解しやすいことを実例で説明しています.Step:Scenarioで説明したインスタンスの具体的な実行手順. JBehaveの構文の下にJBehave storyの例Meta:
@category basic
@color blue
Narrative:
In order to show the basic cart functionality
As a user
I want to add and remove items from the cart
Scenario: Item can be added to cart
Given that the cart is empty
!-- We don't care for which item is added to the cart
When I search for an item
And an item is added to the cart
Then the cart contains that item
Scenario: Item can be removed from cart
Given the cart contains one item
When the item is removed
Then the cart contents is empty
があります.
上の例では基本的にJBehaveのすべてのキーワードをカバーしています(赤い言葉がJBehaveのキーワード)Meta:StoryとScenarioに関するラベル情報をキー値ペアで提供します.Storyを実行するときは、これらのラベルをフィルタとして使用して、実行したい情報だけを実行できます.Narrative:現在のStoryに対応する機能の説明です.一般的なStoryカードの説明とは差が少なく、In order to...,As a ……,I want to…….Scenario:現在のシーンの説明Given:現在のシーンのContextを説明するStep!--:JBehaveのアノテーションWhen:ユーザが操作することを記述するStep Then:ユーザの操作結果を検収するStepを記述し,And:Stepの補助記述キーワードを記述し,どのStepに続くかはどのStepの意味を表し,Whenに続くとWhenを表す.また、この例では言及されていないキーワードには、GivenStories:現在のStoryで別のStoryに依存するキーワードがあります.Examples:一連のデータを指定してScenarioを繰り返し走ることができます.
JBehaveのBDDテストの実装手順1)、JBehave開発環境2の構成)、上記の構文に従ってビジネス分野の専門家と一緒にテキストStoryを書く.3)、テキストStoryを具体的に実行するjavaファイルに対応させる(javaのAnotation技術による)4)、JBehaveの実行ルールを構成する.5)、実行テスト6)、テストレポートを表示する