あんまりよろしくないやり方な気がするけど, 便利な時には便利なので.
標準で用意されている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
まぁ, 原則やるなってことだよね, これ.
便利な時は便利なんだけどなぁ.