Skip to content

Instantly share code, notes, and snippets.

@ryotako
Last active October 18, 2016 12:01
Show Gist options
  • Save ryotako/fe5652137970fc8ea5196581e634a9c4 to your computer and use it in GitHub Desktop.
Save ryotako/fe5652137970fc8ea5196581e634a9c4 to your computer and use it in GitHub Desktop.
t-b/igor-unit-testing-frameworkに関するメモ

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_ENDRunTestの終了直前に呼び出される.

TEST_BEGIN_OVERRIDEという関数をすると,デフォルトのTEST_BEGINの代わりにそれが呼び出される. overrideキーワードで本当に上書きしてしまわないのは,上書きの範囲をテストスートに制限するため.

自動化

Windowsの場合,バッチファイルによりIgor Proの外部からテストを実行することができる. 手順は以下の通り.

  • ProcGrobal(どのmoduleにも属さない関数)としてrunという名前の引数のない関数を定義する.この関数の中でRunTestを呼び出す.
  • そのエクスペリメントファイルと同じフォルダにhelper/autorun-test.batをコピー.
  • autorun-test.batを実行するとテストが行われ,結果がログファイルに書き出される.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment