(2006.11.11更新。RubyUnit (RUNIT) から Test::Unit
へ変更。)
(2017.2) Ruby 2.3.3 に添付の test-unit パッケージに対応。Ruby 2.3.3 には, test-unit 3.1.5 と minitest 5.8.5 がバンドルされている。
[2021.5]
Ruby 3.0 の標準テストフレームワークは, test-unit と minitest です。両方とも gem として同梱されています。
test-unit Webサイト; test-unit - Ruby用単体テストフレームワーク
minitest Webサイト; GitHub - seattlerb/minitest: minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking.
Minitest::Assertions
モジュールのメソッドは, assert_not_... 系がすべて refute_... というメソッドのみになっている。Test::Unit
モジュールのほうは, 互換性のため, refute_... と assert_not_... の両方がある。
ここでは, Test::Unit
のリファレンス記事を作ってみた。
Test::Unit::Assertions
require 'test/unit/assertions'
各種アサーションのメソッドを定めるモジュール。
UncaughtThrow
下記のメソッドは、assert_*() の「*」がパスしたときは何も起こらない。テストに失敗したときは AssertionFailedError
が発生する。
message = nil と message = "" が混ざってるのが、ちょっと気になる。
assert( [object,] message = nil, &block)
ブロックを渡す場合、結果が nil
or false
で失敗。引数で渡す場合, object が真ならpass.
assert_block(message = "assert_block failed.") do ... end
assert_boolean( actual, message = nil )
true
または false
のどちらかなら pass.
assert_empty( object, message = nil )
逆は assert_not_empty
assert_equal(expected, actual, message = nil)
==
メソッドが使われる。
逆 (!=
) は assert_not_equal
assert_in_delta( expected_float, actual_float, delta = 0.001, message = "" )
to_f
メソッドを持つ)でなければならない。deltaは非負でなければならない。(expected_float.to_f - actual_float.to_f).abs <= delta.to_f ならpass.
逆は assert_not_in_delta
assert_include(collection, object, message = nil)
逆は assert_not_include
assert_instance_of( klass, object, message = "" )
object.instance_of?(klass)
が真ならpass。klass そのものからのインスタンスである。
klass はクラスの配列でもよい。
逆は assert_not_instance_of
assert_kind_of( klass, object, message = "")
object.kind_of?(klass)
が真ならpass。klass かそのサブクラスのインスタンスである。is_a?()
と同じ。
klass はモジュールまたはクラスの配列でもよい。
逆は assert_not_kind_of
assert_match( pattern, string, message = "")
Regexp
オブジェクトに変換される。
逆 (!~
) は assert_not_match
assert_no_match( regexp, string, message = "" )
assert_not_match
を使え.
assert_nil( object, message = "")
逆は assert_not_nil
assert_nothing_raised( [exception, ...] [, message]) do ... end
assert_raise
の逆になっている。
assert_nothing_thrown(message = "") do ... end
throw
されなければpass.
このメソッドは, assert_throw
の逆ではない. おしい。
assert_operator( object1, operator, object2, message = "")
to_str
メソッドを持つ) でなければならない。object1.__send__(operator, object2) が真ならpass.
逆は assert_not_operator
assert_raise(exception [, ...] [, message]) do ... end
逆は assert_nothing_raised
(名前注意)
assert_raises(exception [, ...] [, message]) {...}
assert_raise_kind_of( exception [, ...] [, message] ) do ... end
assert_respond_to( object, method, message = "")
to_str
メソッドを持つオブジェクト) でなければならない。object.respond_to?(method)が真であればpass.
逆は assert_not_respond_to
assert_same( expected, actual, message = "")
__id__
が同じ) を確認する。actual.equal?(expected) が真ならpass
逆は assert_not_same
assert_send(send_array, message = nil)
Symbol
. send_array[0].send_array[1](send_array[2], ...) が真ならpass.
assert_send( [[1, 2], :member?, 1] ) # -> pass assert_send( [[1, 2], :member?, 4] ) # -> fail
逆は assert_not_send
assert_throw(expected_symbol, message = "") do ... end
throw
されればpass.
assert_throw(:done) do # -> pass throw(:done) end
注意: assert_nothing_thrown
は, このメソッドの逆ではない。
assert_throws
assert_throw
を使え。
build_message(head, template = nil, ...)
flunk(message = "Flunked")
Test::Unit::TestCase
テストケースを記述するためのスーパークラス。サブクラスにて実施するテストを記述する。test*() メソッドを追加し, setup
, teardown
メソッドを (必要があれば) オーバーライドする。Rubyのリフレクション機能によって、test*() メソッドが順に実行される。
TestCase
派生クラスを定義するファイルを実行すると、そのテストだけ行える。--helpでコマンドラインオプションが表示される。
$ ruby tc.rb --help Test::Unit automatic runner. Usage: tc.rb [options] [-- untouched arguments] -r, --runner=RUNNER Use the given RUNNER. (c[onsole], f[ox], g[tk], g[tk]2, t[k]) -n, --name=NAME Runs tests matching NAME. (patterns may be used). -t, --testcase=TESTCASE Runs tests in TestCases matching TESTCASE. (patterns may be used). -v, --verbose=[LEVEL] Set the output level (default is verbose). (s[ilent], p[rogress], n[ormal], v[erbose]) -- Stop processing options so that the remaining options will be passed to the test. -h, --help Display this help. Deprecated options: --console Console runner (use --runner). --gtk GTK runner (use --runner). --fox Fox runner (use --runner).
Object
Test::Unit::Assertions
, Test::Unit::Util::BacktraceFilter
FINISHED
STARTED