xUnitとは、コンピュータプログラムの単体テスト(ユニットテスト)を行うためのテスティングフレームワークの総称である。これらのフレームワークでは、関数やクラスなど、ソフトウェアの様々な要素(ユニット)をテストすることができる。xUnitフレームワークの主な利点は、テストを自動化できること、同じテストを何度も書かずに済むこと、個々のテストの結果がどうあるべきかを覚えておかなくても良いことである。
このようなフレームワークの最初の実装は、ケント・ベックが開発したSmalltalk用のテスティングフレームワークSUnitである。その後、各コンピュータプログラム言語や開発環境毎に、同様の設計を持つフレームワークが多数作成されている。xUnitそれ自体は非常に単純なプログラムであるが、近年のソフトウェア開発で採用されつつある。JUnit(Java用のxUnit)の項目も参照。
アジャイルソフトウェア開発(エクストリーム・プログラミングなど)においては、リファクタリング・テストファースト等の前提となる重要な要素である。
xUnitフレームワークの設計上の特徴は、いくつかの部分に分けられる。言い換えると、以下の特徴をすべて持つテストフレームワークはxUnitフレームワークの一種であるといえる。
テストを実行、成功させるために必要な状態や前提条件の集合を、フィクスチャと呼ぶ。これらはテストコンテキストとも呼ばれる。開発者はテストの実行前にテストに適した状態を整え、テスト実行後に元の状態を復元することが望ましい。
同じフィクスチャを共有するテストの集合を、テストスイートと呼ぶ。テストスイート内のそれぞれのテストの実行順序は保証されない。
個々のユニットテストは以下のような流れで実行される。
setup(); /* 最初に、テストのためのクリーンな
環境(設定など)を用意する。 */
...
/* テストの本体。ここですべてのテストを行う。 */
...
teardown(); /* 最後は、テストが成功したか失敗したかに関わらず、
他のテストやプログラムに影響を与えないよう、
初めに用意したテスト用の環境を元に戻す。 */
setup() と teardown() の各メソッドは、テストフィクスチャの初期化とクリーンアップを行うためのものである。
テスト対象の関数やクラスなどについて、振る舞いや状態を確認するための関数やマクロを、アサーションと呼ぶ。アサーションが失敗した時(実際の実行結果が期待される結果と異なっていた場合)は、一般的には、例外が投げられ現在のテストの実行は中断される。