ExcelVBAで統合BDD開発環境を構築したメモです。
この記事は以下の記事の続きです。
- EmacsでのExcel VBA開発環境を構築 | Futurismo
- Excel VBAで テスト駆動開発してみる | Futurismo
- ExcelVBAのコードをimport/exportする | Futurismo
- ExcelVBAのステップ数をカウントする | Futurismo
機能
開発環境というところが指す意味は、 rakeをつかってVBA開発で役立つ機能をまとめたということです。
以下のような機能が実装済み。
rake clean # Remove any temporary products.
rake clobber # Remove any generated file.
rake export # export all files to specified dir
rake hide # Hide Excel
rake import # import All Modules
rake open # Open or Connect Excel File
rake release # Make releasee excel file
rake save # Save Excel File
rake show # Show Excel
rake spec # Run All Tests
rake step # Count Steps in Project
rake vbe # Open Visual Basic Editor for Application
rakeからExcelマクロを実行する
ruby の win32oleを利用して、Excelのマクロを実行するところがこのツールのキモ。
@book.run(“ShowTotalCodeLinesInProject”)
こんな感じで、runメソッドをつかって実行する。
BDD実行エンジン
実は、VB Lite Unitが会社の環境では使えなかった。おそらく、Excelが64bit版なことが原因。 ということで、代替手段を探したところ、コンナツールを発見。
記法がRSpecに似ていて、しかも純VBAで書かれている。これを採用。
これと、VBAコードの import/export機能の組み合わせによって
- Emacsで編集
- rake spec -> Excelにコードがインポートされてテスト実行
- イミディエイトウィンドウで結果を確認。
- バグってたらデバッガでステップ実行とか
- テストが成功したら、rake exportしてgitにcommit
というTDDサイクルを回すことができるようになった。
Excelを起動していない状態で rake specを実行すると、 メモリ不足でテストが実行できないというバグがある。(というより解消方法がわからない) rake openしたあとに、一旦 rake saveをすることで回避できる。
フォルダ構造
src/spec/helperの3つに分けた。
生産物はsrcにいれる。テストコードは specフォルダに入れる。helperはお助けツール。
specの命名規則はxxx_specとする。 ファイル名が_specかどうかでテストコードを判定しているので。 本当はもっと設定ファイルとかで設定させたいけど、そのうち。
コード
Environment
- Windows 7 64bit
- Excel 2010
ツールバーから 参照設定を選択肢、以下を追加する必要あり。
- Microsoft Visual Basic for Application Extention