
はじめに
前回は、自動販売機を題材にして、BDDを用いたプロセスの「定式化(Formulation)」の部分までを説明しました。
今回は、「自動化(Automation)」の部分を説明します。

5. 自動化
前回の記事の「4. レビュー」まで、自動化については一切考えていませんでした。(BDDは自動化が目的ではないと第4回でお伝えした通りです。)
ここまできて初めて、自動化について考えます。
今回は、前回作成した以下のGherkin記法のシナリオをインプットにして自動化を行います。
Feature: 自動販売機
Scenario: 飲み物を買うと、飲み物代を引いた金額のお釣りが出る
Given 自動販売機がある
When 550 円を入れる
And 120 円の "コーラ" を選択する
Then "コーラ" が出てくる
And 430 円が出てくる
自動化の手順0. BDDのフレームワークを導入する
BDDで行うためのフレームワークを導入します。本記事では、
- プログラミング言語…Java
- フレームワーク…Cucumber
- ビルドツール…Maven
で臨みます。
また、IDEはIntelliJを使用しており、「Cucumber for Java」のプラグインがインストール済みです。記事中に載っている画像は全てIntelliJのスクリーンショットであることをご了承ください。
Cucumberの構造を理解する
Cucumberは以下の構造を作成して動かします。

Gherkin記法のシナリオとテストコードが分かれているのが、CucumberをはじめとしたBDDフレームワークの特徴です。
これにより、ビジネス関係者はGherkin記法のシナリオを見るだけで、どのような振る舞いを定義しているのか理解することができます。その際に、プログラミング特有のスキルは必要ありません。
CucumberのプロジェクトをCloneする
今回は、cucumber-java-skeletonのプロジェクトをCloneします。
Cloneの仕方とCucumberの実行の仕方についてはプロジェクトのReadmeをご覧ください。
テストが実行できることを確認する
GradleもしくはMavenを用いて、プロジェクトのReadmeに書いてある通りにテストを実行します。
例えばMavenの場合、以下のようにテストが実行できればOKです。初期状態ではテストが失敗するようになっています。

IDE上でフィーチャーファイルのテスト実行できることを確認する
GradleもしくはMavenでテスト実行すると、IDEのフィーチャーファイル上でCucumberの実行ができるようになっています。
今回はCloneしたプロジェクトにデフォルトで入っているmaven/src/test/resources/io/cucumber/skeleton/belly.featureのファイルを開いてみましょう。すると、以下の画像のようになっているはずです。

この中で、行番号の1行目もしくは3行目の右側についている三角形2つのアイコンをクリックします。すると、以下のようなウィンドウが出てくるはずです。この中の一番上にある「Run ‘〜〜’」をクリックすると、IDE上でCucumberのテストを実行できます。

実行後、以下の画像のような結果になればOKです。

不要なファイルおよび記述を削除する
実際のプロジェクトを記述する上で以下のファイルは不要なので、削除してください。
- maven/src/test/resources/io/cucumber/skeleton/belly.feature
- maven/src/main/java/io/cucumber/skeleton/Belly.java
- maven/src/test/java/io/cucumber/skeleton/StepDefinitions.java
以上で、Cucumberを用いてBDDの自動化を行う準備ができました。
自動化の手順1. フィーチャーファイルに記載する
新たにフィーチャーファイルを作成し、前回作成した以下のGherkin記法のシナリオを記載します。今回はmaven/src/test/resources/io.cucumber.vendormachine/vendormachine.featureというファイルを作成しました。
Feature: 自動販売機
Scenario: 飲み物を買うと、飲み物代を引いた金額のお釣りが出る
Given 自動販売機がある
When 550 円を入れる
And 120 円の "コーラ" を選択する
Then "コーラ" が出てくる
And 430 円が出てくる
続きを読むにはログインが必要です。
ご利用は無料ですので、ぜひご登録ください。