2
require 'rubygems'
require 'test/unit'

class Thing
  attr_accessor :foo

  def set_stuff
    @foo = 'bar'
  end
end

class ThingTest < Test::Unit::TestCase
  def setup
    @thing = Thing.new
  end

  def test_set_stuff
    @thing.set_stuff
    assert 'bar' == @thing.foo
  end

  def test_foo_in_other_test
    puts @thing.foo
    assert 'bar' == @thing.foo
  end
end


# Loaded suite testing
# Started
# nil
# F.
# Finished in 0.00439 seconds.
#
#   1) Failure:
# test_foo_in_other_test(ThingTest) [testing.rb:26]:
# <false> is not true.
#
# 2 tests, 2 assertions, 1 failures, 0 errors
4

2 に答える 2

2

違いは、2番目のテストで@thing.set_stuffを呼び出していないことです。

于 2010-07-15T17:58:50.553 に答える
1

私は RSpec ほど Test::Unit に精通していませんが、テストが実行されるたびに setup() メソッドが呼び出されると思います。したがって、ある @thing は別の @thing によって上書きされます。

さらに、テスト ケースの実行について、特定の順序を想定することはできないことがわかりました。多くの場合 (おそらく常に?)、この例のように、テストは最後から最初に実行されます。

于 2010-07-16T03:06:41.777 に答える