sub_test_case を RSpec の context みたいなものだと考えて使っていたらはまりました。
テスト名が同じだと最初に出てきた方しか有効にならないようです。せめて警告でも出てくれれば。
これだけ見ると RSpec の方が使いやすそうです。
require "test/unit"
class TestFoo < Test::Unit::TestCase
test "a" do
p "実行される"
end
sub_test_case "sub" do
test "a" do
p "実行されない"
end
end
end
# >> Loaded suite -
# >> Started
# >> "実行される"
# >> .
# >>
# >> Finished in 0.000489 seconds.
# >> ------
# >> 1 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
# >> 100% passed
# >> ------
# >> 2044.99 tests/s, 0.00 assertions/s
RSpec では次のようにして test-unit の assertion も使うことができるので、いいとこどりで、この方法がいいような気もしてます。
require "rspec/autorun"
RSpec.configure do |config|
config.expect_with :test_unit
end
RSpec.describe do
it "a" do
p "実行される"
assert true
end
context do
it "a" do
p "こっちも実行される"
assert true
end
end
end
# >> "実行される"
# >> ."こっちも実行される"
# >> .
# >>
# >> Finished in 0.0011 seconds (files took 0.20122 seconds to load)
# >> 2 examples, 0 failures
2015-05-29
http://tmtms.hatenablog.com/entry/2014/10/12/ruby-test-unit でも言及されていたので、気を付けなければならない仕様、だと思っていたら不具合だったようです。先日のリリースで修正されていました。