PhpStormから日本語behat
Windows7 + PhpStorm-8.0.3 + behat-3.0.15
Behatを使い始めた。
多言語に対応していない
PhpStorm(8, 9, 10) は、Behatの多言語に対応していない。
英語以外のステップは補完できないし、IDEからテストの実行すらできない。
2014-05-15 に issue が上がっているが、
1年半経ってもアサインがなく、対応される気配がない。
テストを「あらゆる人が読める言語で記述する」というのが、
振る舞いテスト、とくに受け入れテストにおいて大きな意味を持つと理解している。
プログラマが読めればいいのであれば、 Selenium のテストケースでも別にいい。
私は英語を読めないし、それ以上に、ステークホルダは日本語を求めている。
よって、Gherkin は日本語で記述しなければならない。
世の中グローバル、グローバル言っているが、
プロジェクトのステークホルダがそうならない以上、日本語で書くしかない。
そこで、日本語でBehatを補完付き記述、実行できるIDEを探してみたものの見つからなかった。
外部ツールとして実行
外部ツール扱いにすることで、ひとまず実行することだけはできる。
幸いPhpStormはプロジェクトにPHPバイナリを結び付けられるので簡単。
File > Settings > Tools > External Tools に "behat" とでも名前をつけて新規作成。
Program: $PhpExecutable$ Parameters: $ProjectFileDir$\src\vendor\behat\behat\bin\behat --config=behat.yml --format=progress --colors tests/features/$FileName$ Working directory: $ProjectFileDir$\src\behaviorTest
もちろん補完はできないし、実行はファイル単位となってしまう。
多言語での補完と、クリックでシナリオ単位の実行ができるIDEが欲しい。
他のIDEの場合
プロジェクトにPHPバイナリを結び付けられないようなIDEの場合は、
PHP_BIN
などの環境変数経由でPHPバイナリのパスを取得することになりそう。
cmd.exe ならたぶんこんな感じ
@echo off rem ### rem Behat Bridge for IDE (cmd.exe) rem rem Usage: rem Select feature, and execute from IDE. rem Program: <this-file> rem Arguments: tests/features/$FileName$ rem WorkingDir: <project>/src/behaviorTest rem rem Required env vars rem PHP_BIN php-binary rem ### set BASE_DIR = "%~dp0" set BEHAT_BIN=%BASE_DIR%..\..\src\vendor\behat\behat\bin\behat set TEST_ROOT = %~dp0../../src/behaviorTest cd %TEST_ROOT% %PHP_BIN% -v echo on call %PHP_BIN% %BEHAT_BIN% --config=behat.yml --format=progress %*
PowerShellならたぶんこんな感じ
### # IDE用 Behat Bridge (PowerShell版) # # Usage: # 以下のように指定して、IDEからフィーチャを選択して実行する # プログラム: powershell # 引数: -NoProfile -ExecutionPolicy Unrestricted <このファイル> tests/features/$FileName$ # WorkingDir: <project>/src/behaviorTest # # 必要な環境変数 # PHP_BIN phpバイナリ # $PHP_BIN = $env:PHP_BIN $BASE_DIR = Split-Path $MyInvocation.MyCommand.Path -Parent $BEHAT_BIN = Convert-Path $BASE_DIR/../../src/vendor/behat/behat/bin/behat $TEST_ROOT = Convert-Path "$BASE_DIR/../../src/behaviorTest" cd $TEST_ROOT & $PHP_BIN -v & $PHP_BIN $BEHAT_BIN --config=behat.yml --format=progress --colors $args $ret = $lastexitcode exit $ret