xUnitとは、コンピュータプログラムの単体テスト(ユニットテスト)を行うためのテスティングフレームワークの総称である。これらのフレームワークでは、関数やクラスなど、ソフトウェアの様々な要素(ユニット)をテストすることができる。xUnitフレームワークの主な利点は、テストを自動化できること、同じテストを何度も書かずに済むこと、個々のテストの結果がどうあるべきかを覚えておかなくても良いことである。
このようなフレームワークの最初の実装は、ケント・ベックが開発したSmalltalk用のテスティングフレームワークSUnitである。その後、各コンピュータプログラム言語や開発環境毎に、同様の設計を持つフレームワークが多数作成されている。xUnitそれ自体は非常に単純なプログラムであるが、近年のソフトウェア開発で採用されつつある。JUnit(Java用のxUnit)の項目も参照。
アジャイルソフトウェア開発(エクストリーム・プログラミングなど)においては、リファクタリング・テストファースト等の前提となる重要な要素である。
xUnitの設計 xUnitフレームワークの設計上の特徴は、いくつかの部分に分けられる。言い換えると、以下の特徴をすべて持つテストフレームワークはxUnitフレームワークの一種であるといえる。
テストフィクスチャ テストを実行、成功させるために必要な状態や前提条件の集合を、と呼ぶ。これらはテストコンテキストとも呼ばれる。開発者はテストの実行前にテストに適した状態を整え、テスト実行後に元の状態を復元することが望ましい。
テストスイート 同じフィクスチャを共有するテストの集合を、テストスイートと呼ぶ。テストスイート内のそれぞれのテストの実行順序は保証されない。
テストの実行 個々のユニットテストは以下のような流れで実行される。 setup(); /* 最初に、テストのためのクリーンな 環境(設定など)を用意する。 */ ... /* テストの本体。ここですべてのテストを行う。 */ ... teardown(); /* 最後は、テストが成功したか失敗したかに関わらず、 他のテストやプログラムに影響を与えないよう、 初めに用意したテスト用の環境を元に戻す。 */ setup() と teardown() の各メソッドは、テストフィクスチャの初期化とクリーンアップを行うためのものである。
アサーション(表明、検証) テスト対象の関数やクラスなどについて、振る舞いや状態を確認するための関数やマクロを、アサーションと呼ぶ。アサーションが失敗した時(実際の実行結果が期待される結果と異なっていた場合)は、一般的には、例外が投げられ現在のテストの実行は中断される。
xUnitの一覧 JUnit, TestNG(Java用) SUnitCamp Smalltalk SUnit(Smalltalk用) CUnitCUnit Home, Cutter C言語・C++言語用テスティングフレームワーク - Cutter(C言語用) CppUnit - C++ port of JUnit download | SourceForge.net, Cutter(C++用) VBUnit(Visual Basic用) DUNIT: An Xtreme testing framework for Delphi programs(Delphi用) PBUnit(PowerBuilder用) PerlUnitPerlUnit: unit testing framework for Perl(Perl用) PyUnitPyUnit - the standard unit testing framework for Python, noseGitHub - nose-devs/nose: nose is nicer testing for python (Python用) RubyUnitRubyUnit(Japanese)Test::UnitとしてRuby1.8の標準添付ライブラリに統廃合された。, Test::Unittest-unit - a Unit Testing Framework for Ruby(Ruby用) NUnit.org, Home > xUnit.net(.NET Framework用) tclUnitTclUnit download | SourceForge.net(Tcl/Tk用) HUnitHUnit -- Haskell Unit Testing(Haskell用) OUnitGitHub - gildor478/ounit(Objective Caml用) PHPUnitPHPUnit – The PHP Testing Framework(PHP用) JsUnitJSUnit.net – Java Script Testing Tool, MochiKit(MochiKit 英語版Wikipedia)Home - Mochikit.com(JavaScript用) HttpUnit Home(HTTPによる通信を擬似的に行う) HtmlUnit – Welcome to HtmlUnit(Webベースのアプリケーション用。ウェブブラウザのエミュレータ)
関連項目 ユニットテスト・フレームワーク一覧
脚注
外部リンク