かつ丼はおやつに入りますか?

コンピュータの話とか食べ物の話とか旅行とかいろいろ

TestBoxでColdFusionのユニットテスト

概要

Coldfusionでユニットテストを実行する環境を準備する。

TestBoxとは

TestBox - Ortus Solutions

TestBoxは、BDD(Behavior Driven Development)に基づくColdFusion(CFML)の次世代テストフレームワークであり、テストを作成するための明確でわかりやすい構文を提供します。 テストフレームワーク、ランナー、アサーション、期待値ライブラリだけでなく、MockBox、A Mocking&StubbingFrameworkも付属しています。 また、xUnitスタイルのテストとMXUnitの互換性もサポートしています。

いろいろ書いてあるが要はColdFusionでユニットテストを実現するためのフレームワーク

環境セットアップ

TestBoxをインストールするためにまずはCommandboxでColdFusionサーバを立ち上げる。 Commandboxのセットアップについては以前の記事を参照。

CommandBox> server start cfengine=adobe@v2021.0.04+330004

続いてTestBoxをインストール

CommandBox> box install testbox

runnerを生成

CommandBox> testbox generate harness

ユニットテストファイルを作成

CommandBox> testbox create unit name=tests/MyTest.cfc

tests/runner.cfm のcoverageEnabledをfalseに変更。 カバレッジを取得するにはFusionReactorという有償オプションが必要なため無効化する。(デフォルト有効でそのままテストを実行しようとするとエラーになる。)

<cfparam name="url.coverageEnabled"                    default="false">

テスト実行

CommandBox> testbox run
...
╔═════════════════════════════════════════════════════════════════════╗
║ Passed  ║ Failed  ║ Errored ║ Skipped ║ Bundles ║ Suites  ║ Specs   ║
╠═════════════════════════════════════════════════════════════════════╣
║ 4       ║ 0       ║ 0       ║ 3       ║ 1       ║ 1       ║ 7       ║
╚═════════════════════════════════════════════════════════════════════╝

TestBox         v4.5.0
CFML Engine     ColdFusion Server v2021,0,04,330004
Duration        1,758ms
Labels          ---

√ Passed  - Skipped  !! Exception/Error  X Failure

まとめ

  • 実行環境にCommandboxが必要。 server startlocalhostの開発サーバを起動しておく必要がある。
  • テストを実行するにはrunner.cfmが必要。
  • カバレッジを無効化しないと実行時にエラーとなる。

セットアップは以上。テストコードの書き方とモックの使い方については次回。