あんまりよろしくないやり方な気がするけど, 便利な時には便利なので.
標準で用意されているsetup
とteardown
は各テストケースの呼び出し前後に呼び出される.
require 'test/unit'
class TestSample < Test::Unit::TestCase
def setup
puts "setup"
end
def teardown
puts "teardown"
end
def test_foo
puts "foo"
end
def test_bar
puts "bar"
end
end
$ ruby sample.rb
Loaded suite sample
Started
setup [準備して]
bar
teardown [片付ける]
.setup [準備して]
foo
teardown [片付ける]
.
Finished in 0.0010129 seconds.
----------------------------------------------------------------------------------------------------
2 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
----------------------------------------------------------------------------------------------------
1974.53 tests/s, 0.00 assertions/s
普通はこれで何の問題もない.
なんだけど, たまーにテストケース全体の最初と最後だけに呼び出したい事がある.
$ ruby sample.rb
Loaded suite sample
Started
setup [最初に準備して]
bar
.foo
.teardown [最後に片付ける]
Finished in 0.0009669 seconds.
----------------------------------------------------------------------------------------------------
2 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
----------------------------------------------------------------------------------------------------
2068.47 tests/s, 0.00 assertions/s
強引だなぁとは思うけど, TestUnitが最初と最後に呼ぶstartup
とshutdown
を特異クラスでオーバーライドしてやればできるらしい.
require 'test/unit'
class TestSample < Test::Unit::TestCase
class << self
def startup
puts "setup"
end
def shutdown
puts "teardown"
end
end
def test_foo
puts "foo"
end
def test_bar
puts "bar"
end
end
まぁ, 原則やるなってことだよね, これ.
便利な時は便利なんだけどなぁ.