昨日の日記の続き。
ERT の実行結果が表示されているバッファには、いくつかのキーバインドが設定されていてる。単に結果表示の場所ではなく、テスト実行やデバッグのためのインターフェイスを兼ねているイメージ。
| キーバインド | 機能 |
|---|---|
TAB / S-TAB |
プログレスバー / テスト結果間の移動 |
RET |
プログレスバー上から結果へ、テスト名から定義箇所へジャンプ |
r |
カーソル位置に近いテストの再実行 |
d |
デバッグモードを ON にしてテストを再実行 |
. |
テストケースの定義箇所へジャンプ |
b |
失敗したテストケース上で入力するとバックトレース表示 |
l |
should のテストのリスト表示 |
m |
テストケース内での message 結果を表示(print debug) |
昨日もちょっと書いたけど Selector についての詳細。いろいろな指定をして実行するテストケースを選択(絞り込み)ができる。
| Selector 名 | 選択内容 |
|---|---|
nil |
なにも選択しない |
t |
全てのテストケースを選択 |
:new |
未実行のテストケースを選択 |
:failed |
失敗したテストケースを選択 |
:passed |
成功したテストケースを選択 |
:expected |
成功を期待するテストケースを選択(?よくわからない) |
:unexpected |
失敗を期待するテストケースを選択(?よくわからない) |
| "正規表現" | 正規表現とマッチするテストケースを実行 |
| テスト | 指定したテスト(ert-testオブジェクト)のみ実行 |
| シンボル | 指定したシンボルのテストケースを選択 |
これらの他にも (member TESTS...) や (eql TEST)、(and SELECTORS)、(or SELECTORS)、(not SELECTORS)、(tag TAG)、(satisfies PREDICATE) などがマニュアルには記載されているんだけど、ERT のインタラクティブモードでは使えないようだ。バッチモードで使うのかな。
アサーション用のキーワード(マクロ)についてもいくつか用意されている。
| アサーション名 | 内容 |
|---|---|
should |
成功を期待 |
should-not |
失敗を期待 |
should-error |
エラーが発生することを期待(エラータイプを指定) |
should-not-error |
エラーが発生しないことを期待(暗黙に設定されている) |
known bug などで「今のところ失敗することが分かっているけど、まだ直せていない動作」をテストとして書いておくこともできるようだ。この場合は、:expected-result :failed と定義すれば良いようだ。
この場合「失敗することが分かっている失敗」については、プログレスバーの表示が小文字の「f」かつ緑色で表示される。失敗を意味する赤い大文字の「F」とは別の表記になる。
Selector のところの :expected と関連ありそうなんだけど、ちょっと動作について理解しきれていない。
条件によってテストをスキップすることもできる。この場合はテストケース内に (skip-unless ...) と条件を記載すると良いようだ。