LoginSignup
1
2

More than 5 years have passed since last update.

Ruby の test-unit は test 名が同じだと最初のしか有効にならない(が、最新版だと修正されています)

Last updated at Posted at 2015-05-21

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 でも言及されていたので、気を付けなければならない仕様、だと思っていたら不具合だったようです。先日のリリースで修正されていました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2