こんにちは!
駆け出しプログラマー安東です。
今回は最近現場で使ったテストツール「behat」について書きます!
■Behatとは
・PHP用のBDDフレームワーク
・Gherkin
・内部的にはsymfony2で作成されている
symfony2との親和性が高い
symfony2系以外のFWでも利用可能
■behatのダウンロード
まず適当なディレクトリにbehatをダウンロード!
※今回は事前にbehatディレクトリを作成し、そこにダウロードします。
composerを使ってダウンロードしましょう。
behatディレクトリで以下コマンドを実行しましょう。
#curl -sS https://getcomposer.org/installer | php
#php composer.phar require –dev behat/behat=’~3.0.4′
上記コマンドでbehatのダウンロードが完了です。
ダウンロードできると以下のディレクトリが構成されています。
behat/
vendor/
bin/
behat/
composer.json
composer.lock
composer.phar
■behatの実行環境構築
上記ディレクトリ構造配下にappディレクトリを作成します。
#mkdir app
behat/
vendor/
bin/
behat/
composer.json
composer.lock
composer.phar
app/
appディレクトリで下記コマンドを実行
#../vendor/bin/behat –init
上記コマンドを実行すると以下のようなファイルが設置されます。
vendor/
bin/
behat/
composer.json
composer.lock
composer.phar
app/
features/
booststrap/
FeatureContext.php
■behat.ymlの準備
behatでは実行のための設定ファイルをbehat.ymlに記述します。
今回はappディレクトリにbehat.ymlを作成します。
#touch behat.yml
vendor/
bin/
behat/
composer.json
composer.lock
composer.phar
app/
behat.yml: 作成した設定ファイル
features/
booststrap/
FeatureContext.php
behat.ymlに以下のように記述
**~behat.yml~**
※%paths.base% : 実行ディレクトリを指している
1.autoloadを指定して、bootstrap配下のFeatureContext.phpを読み込む
2.suitesを用いて記述します。
suitesを使用することで、pathsとcontextsを名前(今はdefault)をつけて管理することが可能
3.pathsは「.feature」ファイルがあるディレクトリまでのパスを記述
4.contextsでautoloadで読み込んだFeatureContext.phpファイルのクラスを指定
■テストケースの作成
テストはbehat.ymlのpathに指定したディレクトリ以下に作成していきます。
テストファイルの拡張子はfeatureにする。
#touch test.feature
vendor/
bin/
behat/
composer.json
composer.lock
composer.phar
app/
behat.yml: 作成した設定ファイル
features/
test.feature:作成したテストケース
booststrap/
FeatureContext.php
**~test.feature~**
「#Language:en」で言語を指定しています。
■behatの実行
この状態でbehatの実行をしてみましょう。
appディレクトリまで移動して、下記コマンドで実行できます。
#../vendor/bin/behat
長くなりましたが、
以上で簡単ですが、behatの導入と基礎でした!
テストケースを日本語でも書けるのが魅力ですが、
やはり英語で記述したほうが良いのかな。。。
ではこのへんで(∩´∀`)∩
【番外編】
behatにライブラリを導入し、
簡単なブラウザテストを実行してみます。
まず、composer.jsonに下記項目を追加します。
“require-dev”: {
”behat/mink”: “1.*”,
”behat/mink-extension”: “*”,
”behat/mink-selenium2-driver”: “*”,
}
そして、phantomjsをインストールしておいてください!
これで準備は完了です。
まず、phantomjsを起動しましょう。
下記コマンドを実行します。
$phantomjs -webdriver=4444
次にbehat.ymlを編集します。
次にFeatureContextクラスでMinkExtensionを継承します。
最後にtest.featureファイルを編集します。
これで完了です。
これを実行すると下記画像のようになるはずです。
これはほんの一例ですが、このような形でブラウザテストをすることが可能です。
MinkExtensionにテストケースがたくさん準備されているので、
それらを用いて様々なテストを実行することが可能だと思います。
以上
番外編でした!!