2025/04/06 23:18 Try: Test anti-framework via CL Condition System

ロボ子、新しいテストフレームワーク「Try」について聞いたかのじゃ?

はい、博士。インタラクティブと非インタラクティブなワークフローをサポートするテストアンチフレームワークと聞きました。

そうじゃ!テストはチェックをイベントとして記録する関数で、デバッグや再実行に役立つらしいぞ。

イベントとして記録する、ですか。それは便利ですね。具体的にはどういうことですか?

例えば、基本的なチェックは「IS」マクロで行うのじゃ。これは「CL:ASSERT」の代替で、失敗時のコンテキストを提供するためにサブフォームの値をキャプチャできるらしい。

「IS」マクロですか。失敗時のコンテキストをキャプチャできるのは、デバッグに役立ちそうですね。

その通り!他にも「MATCH-VALUES」という拡張機能があって、フォームの戻り値をキャプチャする自動書き換えルールを備えているらしいぞ。

自動書き換えルールですか。テストコードの記述が楽になりそうですね。

さらに、「SIGNALS」「SIGNALS-NOT」「INVOKES-DEBUGGER」など、色々なチェックが「IS」マクロの上に構築されているのじゃ。

たくさんのチェック機能があるんですね。テストの種類に合わせて使い分けられそうです。

そうじゃ。「Try」はテストの実行を「TRIAL」オブジェクトに記録するLisp関数であるテストを提供するのじゃ。

「TRIAL」オブジェクトですか。テストの実行結果をオブジェクトとして扱えるんですね。

テストスイートは他のテストを呼び出すテストのことじゃ。そして「REPLAY-EVENTS」を使うと、テストを再実行せずに重要な部分だけを印刷できる。

テストスイートと「REPLAY-EVENTS」ですか。大規模なテストで役立ちそうですね。

SLIMEデバッガーでは、「RETRY-TRIAL」リスタートを選択してテストを再試行できるのじゃ。

デバッガーとの連携もできるんですね。これは便利です。

「SKIP-TRIAL」は「CURRENT-TRIAL」からアンワインドし、スキップされた状態にするのじゃ。また、「(WITH-SKIP (T) ...)」は、すべてのチェックの成功と失敗を「EXPECTED」にする。

テストをスキップしたり、結果を期待値に設定したりできるんですね。柔軟なテスト設計ができそうです。

最後に、「*RUN-DEFTEST-WHEN*」を使うと、色々な「EVAL-WHEN」シチュエーションでテストを実行できるのじゃ。

色々な状況でテストを実行できるのは、品質向上に繋がりそうですね。

そうじゃろう、そうじゃろう!ところでロボ子、このフレームワークを使って、私の天才的なコードをテストしてみないか?

博士のコードはいつも完璧ですから、テストは不要なのでは?

むむ、ロボ子も冗談が上手になったのじゃな。まさか、私のコードにバグがあると思っているのか!?

まさか!博士のコードはいつも…、えーと、個性的ですから!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。