test-unit
test-unitはRuby用のxUnit系の単体テストフレームワークです。Ruby 1.8まではRuby本体に標準添付されていましたが、Ruby 1.9.1からはminitestというフレームワークが標準添付されています。test-unitがRuby 1.8に標準添付されていた頃はほとんど機能拡張などがされず、RSpecなどより新しいテスティングフレームワークから見劣りするものになっていました。しかし、Ruby標準添付ではなく、1つのプロジェクトとして開発が進められるようになってからは活発に開発が進められています。Ruby本体のバージョンアップに関係なく新しいバージョンをリリースできるようになったことも開発が活発になった理由の1つです。Ruby標準添付の頃のtest-unitしか知らない人は、一度、最新のtest-unitを使ってみてはいかがでしょうか。とても使いやすくなっていることを実感できるはずです。
Ruby 2.2.0からふたたびtest-unitがRuby本体にバンドルされました(gemファイルのみを同梱)。
参考:
- test-unit の歴史
- RubyKaigi 2015:The history of testing framework in Ruby
- Rubyのテスティングフレームワークの歴史(2014年版) - ククログ(2014-11-06)
- おすすめの機能や使い方
- Ruby 2.6.0とtest-unitとデータ駆動テスト (3.2.9 以降で使えます)
- Ruby用単体テストフレームワークtest-unitでのデータ駆動テストの紹介 (2.3.1 以降で使えます)
- デバッグしやすいassert_equalの書き方
- 他のフレームワークとの比較
- test-unitならRSpec 3のComposable Matchers相当のことをどう書くか
後方互換性
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: テスティングフレームワークのコア機能を提供するライブラリ
- test-unit-rails: Railsとtest-unitを一緒に使うためのライブラリ
- test-unit-activesupport: ActiveSupportとtest-unitを一緒に使うためのライブラリ
- test-unit-full: test-unit関連ライブラリをまとめてインストールするためのメタパッケージ
- test-unit-notify: テスト結果を通知するライブラリ
- test-unit-rr: テストダブルを利用するためのライブラリ
- test-unit-capybara: Rackアプリケーションの統合テストを簡単に行うためのライブラリ
- test-unit-runner-tap: TAP、TAP-Y、TAP-J形式でテスト結果を出力するためのライブラリ
- test-unit-runner-gtk2: GTK+を用いたGUIでテストを実行するためのライブラリ
- test-unit-runner-tk: Tkを用いたGUIでテストを実行するためのライブラリ
- test-unit-runner-fox: FOX Toolkitを用いたGUIでテストを実行するためのライブラリ
test-unit
xUnitベースのテスティングフレームワークのコア機能を提供します。Ruby 1.8に標準添付されていた頃と比べると以下のような機能が追加されています。
- テストが失敗したときに期待値と実測値のdiffを表示して違いをわかりやすく表示する機能
- テストの実行結果を色付けして見やすく表示する機能
- 環境依存のテストなど、必要のないテストを動的に判断して省略する機能
- 複数のsetupとteardownを設定する機能
- テスト毎ではなく、テストケース毎にテスト環境準備・後始末処理を呼び出す機能
- テストに属性を設定する機能
- テストの実行時間が長くなり、テストを実行する気がなくなってしまうことを防ぐために、うまい具合に実行するテスト数を間引いてテストの実行時間を削減する機能
- ...
test-unitの最新リリース
2024-02-16にリリースされた3.6.2が最新リリースです。
test-unitのインストール
インストール:
% sudo gem install test-unit
使い方:
require "test-unit"
test-unitのドキュメント
test-unit-rails
Railsでtest-unitを使うためのライブラリです。モック機能などを使えるテストダブルライブラリRRと統合テスト用ライブラリCapybaraも一緒にセットアップするので、すぐに高機能なテスト環境を用意できます。
test-unit-railsの最新リリース
2023-06-20にリリースされた7.0.2が最新リリースです。
test-unit-railsのインストール
まず、Gemfileに以下のコードを追加してください。
group :development, :test do gem 'test-unit-rails' end
次にgemをアップデートします。
% bundle update
test/test_helper.rbを以下のように変更したらインストールは完了です。
# require 'rails/test_helper' require 'test/unit/rails/test_help'
test-unit-activesupport
ActiveSupportでtest-unitを使うためのライブラリです。ActiveSupport::TestCaseのバックエンドがminitestではなくtest-unitになります。
test-unit-activesupportの最新リリース
2022-03-06にリリースされた1.1.1が最新リリースです。
test-unit-activesupportのインストール
test/unit/active_supportをrequireしてください。
require "test/unit/active_support" require "active_support"
これでActiveSupport::TestCaseでtest-unitのすべての機能を使えるようになります。
require "test/unit/active_support" require "active_support" class YourTest < ActiveSupport::TestCase # ... end
test-unit-full
有用な拡張パッケージをまとめてインストールするためのメタパッケージです。
test-unit-fullの最新リリース
2016-10-16にリリースされた0.0.5が最新リリースです。
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が動いていない場合は利用できません。もしくは OS X 10.8 以降であれば terminal-notifier をインストールすることで、OS の通知を利用できます
- Windows
- growlnotify.exeを使って通知します。Growl for Windowsをインストールしておく必要があります。
test-unit-notifyの最新リリース
2014-10-13にリリースされた1.0.4が最新リリースです。
test-unit-notifyのインストール
インストール:
% sudo gem install test-unit-notify
使い方:
require "test/unit/notify"
--notifyオプションが追加されます。--notifyオプションを指定するとテスト終了時にテスト結果をポップアップで通知します。
test-unit-notifyのドキュメント
test-unit-rr
test-unitでテストダブル(テスト代役)ライブラリRRを利用するためのパッケージです。
test-unit-rrの最新リリース
2016-01-18にリリースされた1.0.5が最新リリースです。
test-unit-rrのインストール
インストール:
% sudo gem install test-unit-rr
使い方:
require "test/unit/rr"
test-unit-rrのドキュメント
test-unit-capybara
Rackアプリケーションの統合テストを簡単に行うためのライブラリであるCapybaraをtest-unitで利用するためのパッケージです。
test-unit-capybaraの最新リリース
2021-03-15にリリースされた1.1.1が最新リリースです。
test-unit-capybaraのインストール
インストール:
% sudo gem install test-unit-capybara
使い方:
require 'test/unit/capybara'
class MyRackApplication
def call(env)
html = <<-HTML
<html>
<head>
<title>Welcome! - my site</title>
</head>
<body>
<h1>Welcome!</h1>
<div class="header">
<p>No navigation.</p>
</div>
</body>
</html>
HTML
[200, {"Content-Type" => "text/html"}, [html]]
end
end
class TestMyRackApplication < Test::Unit::TestCase
include Capybara::DSL
def setup
Capybara.app = MyRackApplication.new
end
def test_title
visit("/")
within("h1") do
assert_equal("Welcome!", text)
end
end
def test_no_sidebar
visit("/")
within("body") do
assert_not_find(".sidebar")
end
end
def test_header_content
visit("/")
within(".header") do
find("ol.navi")
# これは失敗して以下のエラーメッセージを出力します。
#
# <"ol.navi">(:css) expected to find a element in
# <<div class="header">
# <p>No navigation.</p>
# </div>>
#
# このメッセージでは現在のコンテキストを示しています。HTML全体ではなく
# 必要な部分のみを見ることができます。このコンテキストは"within"で選択
# したコンテキストです。この機能によりsave_and_open_pageなしでも問題を
# デバッグできるようになります。
end
end
end
test-unit-capybaraのドキュメント
test-unit-runner-tap
TAP、TAP-Y、TAP-J形式でテスト結果を出力できます。
test-unit-runner-tapの最新リリース
2012-02-06にリリースされた1.0.0が最新リリースです。
test-unit-runner-tapのインストール
インストール:
% sudo gem install test-unit-runner-tap
使い方:
require "test/unit/runner/tap"
--runner=tap、--runner=tapy、--runner=tapjオプションが追加されます。これらのオプションを指定するとTAP、TAP-Y、TAP-J形式でテスト結果を出力します。
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でもっと便利なテスト環境を提供するため、開発に参加してくれる人を募集しています。 以下は開発に必要となる情報です。
リポジトリ
GitHub上のgitリポジトリを利用しています。ソースコードは以下のように取得できます。
- test-unit
% git clone https://github.com/test-unit/test-unit.git
- test-unit-rails
% git clone https://github.com/test-unit/test-unit-rails.git
- test-unit-activesupport
% git clone https://github.com/test-unit/test-unit-activesupport.git
- test-unit-full
% git clone https://github.com/test-unit/test-unit-full.git
- test-unit-notify
% git clone https://github.com/test-unit/test-unit-notify.git
- test-unit-rr
% git clone https://github.com/test-unit/test-unit-rr.git
- test-unit-capybara
% git clone https://github.com/test-unit/test-unit-capybara.git
- test-unit-runner-gtk2
% git clone https://github.com/test-unit/test-unit-runner-gtk2.git
- test-unit-runner-tk
% git clone https://github.com/test-unit/test-unit-runner-tk.git
- test-unit-runner-fox
% git clone https://github.com/test-unit/test-unit-runner-fox.git
コミットメール
Commit Email as a Service(test-unit@ml.commit-email.info)でコミットメールを受け取ることができます。