xUnitは、共通の祖先であるSUnitに遡ることができる重要な構造と機能を共有する自動テストソフトウェアフレームワークに使用されるラベルです。
SUnitフレームワークは、ケント・ベックとエーリッヒ・ガンマによってJavaに移植され、 JUnitとして広く普及しました。他の言語への移植も人気を博し、構造化されたオブジェクト指向スタイルはJavaやC#などの人気言語と相性が良いという意見も出ています。
適応版の名前は、多くの場合「SUnit」の「S」を対象言語名の略語に置き換えたバリエーションになります。例えば、Java の場合は JUnit、Rの場合は RUnit です。「xUnit」という用語は、言語固有の接頭辞を表すプレースホルダーである「x」を含む、そのような適応版全般を指します。
xUnitフレームワークは、単体テスト(コードの独立した単位をテストすること)によく使用されますが、統合テストやシステムテストを含むあらゆるレベルのソフトウェアテストに使用できます。
xUnitフレームワークは、以下の一般的なアーキテクチャを備えています。[ 1 ]
テストケースとは、テストを構成する最小単位であり、一般的にはテスト対象ソフトウェアにおける単純な処理手順を記述したものです。テストケースのコードは、入力データと環境状態を準備し、テスト対象ソフトウェアを起動し、期待される結果を検証します。
プログラマーは各テストケースに対応するコードを作成する。
テストケースは、期待される結果を検証する1つ以上のアサーションを用いて実装されます。
一般的に、フレームワークはアサーション機能を提供します。フレームワークによっては、カスタムアサーションを使用する方法を提供する場合もあります。
テストスイートとは、関連するテストケースの集合体です。テストスイートは共通のフレームワークに基づいており、環境設定やクリーンアップコードの再利用を可能にします。
一般的に、テストランナーはテストスイートのケースを任意の順序で実行する可能性があるため、プログラマーは上から下への実行順序に依存すべきではありません。
テストフィクスチャ(テストコンテキストとも呼ばれる)は、テストスイートの各テストケースの実行環境を提供します。一般的に、フィクスチャは、テスト実行前に既知の良好な実行環境をセットアップし、実行後に環境をクリーンアップするように構成されます。
フィクスチャには、状態の設定とクリーンアップを行う1つ以上の関数が設定されています。テストランナーは、各ケースの前に各設定関数を実行し、各クリーンアップ関数を後に実行します。
テストランナーとは、テストを実行して結果を報告するプログラムのことです。[ 2 ]このプログラムは、多くの場合フレームワークの一部です。
テストランナーは、さまざまな形式で結果を出力できます。多くの場合、一般的なデフォルト形式は、人間が読みやすいプレーンテキストです。さらに、ランナーは構造化された出力を生成することもできます。一部のxUnitアダプテーション(JUnitなど)は、JenkinsやAtlassian Bambooなどの継続的インテグレーションシステムで使用できるXMLを出力できます。