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

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

- English

# 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に標準添付されていた頃と比べると以下のような機能が追加されています。

- テストが失敗したときに期待値と実測値のdiffを表示して違いをわかりやすく表示する機能
- テストの実行結果を色付けして見やすく表示する機能
- 環境依存のテストなど、必要のないテストを動的に判断して省略する機能
- 複数のsetupとteardownを設定する機能
- テスト毎ではなく、テストケース毎にテスト環境準備・後始末処理を呼び出す機能
- テストに属性を設定する機能
- テストの実行時間が長くなり、テストを実行する気がなくなってしまうことを防ぐために、うまい具合に実行するテスト数を間引いてテストの実行時間を削減する機能
- ...

### test-unit最新リリース

2011-02-14にリリースされた2.2.0が最新リリースです。

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

インストール:

    % sudo gem install test-unit

使い方:

    gem "test-unit"
    require "test/unit"

## test-unit-full

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

### test-unit-full最新リリース

2011-02-09にリリースされた0.0.3が最新リリースです。

### 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
  growlnotifyを使って通知します。growlnotifyコマンドが無かったり、Growlが動いていない場合は利用できません。
Windows
  どうやるのがいいのでしょうか。Growl for Windows？（未実装）

### test-unit-notify最新リリース

2011-02-10にリリースされた0.2.1が最新リリースです。

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

インストール:

    % sudo gem install test-unit-notify

使い方:

    require "test/unit/notify"

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

## test-unit-rr

test-unit 2でテストダブル（テスト代役）ライブラリRRを利用するためのパッケージです。

### test-unit-rr最新リリース

2011-02-10にリリースされた1.0.1が最新リリースです。

### test-unit-rrのインストール

インストール:

    % sudo gem install test-unit-rr

使い方:

    require "test/unit/rr"

## test-unit-runner-gtk2

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

### test-unit-runner-gtk2最新リリース

2011-02-09にリリースされた0.0.2が最新リリースです。

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

インストール:

    % sudo gem install test-unit-runner-gtk2

使い方:

    require "test/unit/runner/gtk2"

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

## test-unit-runner-tk

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

### test-unit-runner-tk最新リリース

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

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

インストール:

    % sudo gem install test-unit-runner-tk

使い方:

    require "test/unit/runner/tk"

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

## test-unit-runner-fox

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

### test-unit-runner-fox最新リリース

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

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

インストール:

    % sudo gem install test-unit-runner-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-rr

      % svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-rr/trunk test-unit-rr

test-unit-runner-gtk2

      % svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-runner-gtk2/trunk test-unit-runner-gtk2

test-unit-runner-tk

      % svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-runner-tk/trunk test-unit-runner-tk

test-unit-runner-fox

      % svn co http://test-unit.rubyforge.org/svn/extensions/test-unit-runner-fox/trunk test-unit-runner-fox