Ruby用単体テストフレームワーク - Test::Unit

Test::Unit

Test::UnitはRuby用の単体テストフレームワークです。Ruby 1.8まではRuby本体に標準添付されていましたが、Ruby 1.9からはより小さなminitestというフレームワークが標準添付されています。Test::UnitがRuby 1.8に標準添付されていた頃はほとんど機能拡張などがされず、RSpecなどより新しいテスティングフレームワークから見劣りするものになっていました。しかし、Ruby標準添付ではなく、1つのプロジェクトとして開発が進められるようになってからは活発に開発が進められています。Ruby本体のバージョンアップに関係なく新しいバージョンをリリースできるようになったことも開発が活発になった理由の1つです。Ruby標準添付の頃のTest::Unitしか知らない人は、一度、最新のTest::Unitを使ってみてはいかがでしょうか。とても使いやすくなっていることを実感できるはずです。

後方互換性

Test::Unitではなるべく後方互換性を維持したまま開発を進めているため、ほとんどの場合、Ruby 1.8に標準添付されていたTest::Unitで動いたテストは最新のTest::Unitでも動作します。しかし、100%ではありません。もし、完全にRuby 1.8に標準添付されていたバージョンを使用したい場合は、以下のようにtest-unit 1.2.3をインストールし、明示的にtest-unit 1.2.3を利用するようにしてください。

test-unit 1.2.3のリファレンスマニュアル

インストール:

% sudo gem install test-unit -v 1.2.3

使用法:

require "rubygems"
gem "test-unit", "1.2.3"
require "test/unit"

機能の分割

Test::Unitには外部ライブラリに依存している機能がいくつかあります。たとえば、テスト結果をGUIで表示する部分です。これらの部分は別のパッケージとしてリリースすることにし、標準的なコア機能はtest-unitパッケージとしてリリースしています。そのため、付加的な機能を利用する場合は明示的にtest-unitとは異なるパッケージをインストールする必要があります。

例えば、GTK+を用いたテスト実行インターフェイスを利用する場合は以下のようになります。

インストール:

% sudo gem install test-unit-runner-gtk2

使用法:

require "test/unit/runner/gtk2"

これにより--runner=gtk2オプションが利用できるようになります。--runner=gtk2オプションを指定することによりGTK+を用いたテスト実行インターフェイスを利用できるようになります。

test-unit関連パッケージは以下の通りです。

test-unit

xUnitベースのテスティングフレームワークのコア機能を提供します。Ruby 1.8に標準添付されていた頃と比べると以下のような機能が追加されています。

test-unit最新リリース

2010-11-25にリリースされた2.1.2が最新リリースです。

test-unitのインストール

インストール:

% sudo gem install test-unit

test-unit-full

以下の拡張パッケージをまとめてインストールするためのメタパッケージです。

test-unit-full最新リリース

2010-07-17にリリースされた0.0.2が最新リリースです。

test-unit-fullのインストール

インストール:

% sudo gem install test-unit-full

使い方:

require "test/unit/full"

test-unit-notify

スクリーンショット テストの実行結果をポップアップで通知します。通知方法は環境によって異なります。

GNOMEやXfceやKDEなどのX Window Systemベースの環境
notify-sendを使ってD-Bus経由でnotification-daemonにリクエストを送ることにより通知します。notify-sendコマンドが無かったり、notification-daemonが動いていない場合は利用できません。
Mac OS X
Growlを使って通知できるようになるといいですね!(未実装)
Windows
どうやるのがいいのでしょうか。Growl for Windows?(未実装)

test-unit-notify最新リリース

2010-11-25にリリースされた0.1.0が最新リリースです。

test-unit-notifyのインストール

インストール:

% sudo gem install test-unit-notify

使い方:

require "test/unit/notify"

--notifyオプションが追加されます。--notifyオプションを指定するとテスト終了時にテスト結果をポップアップで通知します。

test-unit-gtk2

GTK+を用いて実装されたGUIのテスト実行機能です。

test-unit-gtk2最新リリース

2008-06-17にリリースされた0.0.1が最新リリースです。

test-unit-gtk2のインストール

インストール:

% sudo gem install test-unit-gtk2

使い方:

require "test/unit/runner/gtk2"

--runner=gtk2オプションが追加されます。--runner=gtk2オプションを指定するとGTK+ベースのUIでテストを実行します。

test-unit-tk

Tkを用いて実装されたGUIのテスト実行機能です。

test-unit-tk最新リリース

2008-06-17にリリースされた0.0.1が最新リリースです。

test-unit-tkのインストール

インストール:

% sudo gem install test-unit-tk

使い方:

require "test/unit/runner/tk"

--runner=tkオプションが追加されます。--runner=tkオプションを指定するとTkベースのUIでテストを実行します。

test-unit-fox

FOX Toolkitを用いて実装されたGUIのテスト実行機能です。

test-unit-fox最新リリース

2008-06-17にリリースされた0.0.1が最新リリースです。

test-unit-foxのインストール

インストール:

% sudo gem install test-unit-fox

使い方:

require "test/unit/runner/fox"

--runner=foxオプションが追加されます。--runner=foxオプションを指定するとFOX ToolkitベースのUIでテストを実行します。

開発者向け情報

Test::UnitはRubyでもっと便利なテスト環境を提供するため、開発に参加してくれる人を募集しています。 以下は開発に必要となる情報です。

リポジトリ

RubyForge上のSubversionリポジトリを利用しています。チェックアウト方法は以下の通りです。

test-unit
% svn co http://test-unit.rubyforge.org/svn/trunk test-unit
test-unit-full
% svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-full/trunk test-unit-full
test-unit-notify
% svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-notify/trunk test-unit-notify
test-unit-gtk2
% svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-gtk2/trunk test-unit-gtk2
test-unit-tk
% svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-tk/trunk test-unit-tk
test-unit-fox
% svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-fox/trunk test-unit-fox