昨日の日記の続き。
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 ...)
と条件を記載すると良いようだ。