TL;DR
自動テストを書いて実行するためのソフトウェアフレームワーク。テストケースの書き方、アサーション、テストの実行と結果の報告をまとめて提供する。
仕組み
Wikipedia によると、多くのテスティングフレームワークは xUnit と呼ばれる共通の構造を持つ。祖先は Smalltalk の SUnit で、Kent Beck と Erich Gamma が Java に移植した JUnit が広く普及し、各言語に移植された。xUnit の主な構成要素は次のとおりである。
- テストケース: テスト対象のコードを呼び出し、結果を確かめる、テストの最小単位
- アサーション: 期待する結果を検証する。多くはフレームワークが用意する
- テストスイート: 準備と後片付けのコードを共有する、関連するテストケースの集まり
- テストフィクスチャ: 各テストケースの前に既知の状態を用意し、後で片付ける
- テストランナー: テストを実行し、結果を報告するプログラム
例
JavaScript の Jest や Vitest、.NET の NUnit、Rust の rstest、F# の Expecto などがある。
注意点
Wikipedia によると、テストランナーはテストケースを任意の順番で実行することがあるので、テストは実行順に依存しないように書く。