t-b/igor-unit-testing-frameworkに関する自分用のメモ.
pdfマニュアルを参考にしているが翻訳ではない.
このパッケージはIgor ProプロシージャやXOPの作成者に単体テストのユーティリティを提供する. パッケージは
- アサーション
- テストケース
- テストスート
の三要素からなる.
テストを実行する関数で,以下の3種類がある.
- WARN : ログを出力
- CHECK : ログを出力した上でエラーカウントを計上
- REQUIRE : ログ,エラーカウントをした上で直ちに中断
意味としては上から順に
- 見過ごされても構わない(?)エラー
- エラー
- テストの続行そのものに支障をきたす深刻なエラー
Igor Proの場合CHECKを使っておけば問題ない.
以下の条件を満たす関数. この内部で上記アサーションを使用する.
- 引数を取らない
- 名前が_IGNOREで終わらない
- (独立モジュールでない)通常のmoduleに属する(ファイル冒頭で#pragma ModuleName=でモジュール名が宣言されている)
上記テストケースが書かれたプロシージャファイル.
このファイル自体は特別な条件を満たす必要はなく,後述のRunTest
関数の引数として指定されたプロシージャファイルがテストスートとして認識される.
テストの準備や記録のために,イベントの前や後に特定のフック関数を呼び出す.
たとえばTEST_BEGIN
はテストスートの最初のテストスートの実行前に呼び出され,TEST_END
がRunTest
の終了直前に呼び出される.
TEST_BEGIN_OVERRIDE
という関数をすると,デフォルトのTEST_BEGIN
の代わりにそれが呼び出される.
override
キーワードで本当に上書きしてしまわないのは,上書きの範囲をテストスートに制限するため.
Windowsの場合,バッチファイルによりIgor Proの外部からテストを実行することができる. 手順は以下の通り.
- ProcGrobal(どのmoduleにも属さない関数)としてrunという名前の引数のない関数を定義する.この関数の中で
RunTest
を呼び出す. - そのエクスペリメントファイルと同じフォルダにhelper/autorun-test.batをコピー.
- autorun-test.batを実行するとテストが行われ,結果がログファイルに書き出される.