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を利用するようにしてください。
インストール:
% 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に標準添付されていた頃と比べると以下のような機能が追加されています。
- テストが失敗したときに期待値と実測値のdiffを表示して違いをわかりやすく表示する機能
- テストの実行結果を色付けして見やすく表示する機能
- 環境依存のテストなど、必要のないテストを動的に判断して省略する機能
- 複数のsetupとteardownを設定する機能
- テスト毎ではなく、テストケース毎にテスト環境準備・後始末処理を呼び出す機能
- テストに属性を設定する機能
- テストの実行時間が長くなり、テストを実行する気がなくなってしまうことを防ぐために、うまい具合に実行するテスト数を間引いてテストの実行時間を削減する機能
- ...
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