为什么在不同的单元测试中访问此实例变量nil? 需要“rubygems” 需要“测试/单元” 阶级事务 属性存取器:foo def set_东西 @foo='bar' 结束 结束 类ThingTest

为什么在不同的单元测试中访问此实例变量nil? 需要“rubygems” 需要“测试/单元” 阶级事务 属性存取器:foo def set_东西 @foo='bar' 结束 结束 类ThingTest,ruby,unit-testing,testunit,Ruby,Unit Testing,Testunit,不同之处在于,在第二个测试中,您没有调用@thing.set\u stuff。我对test::Unit的熟悉程度不如RSpec,但我相信每次运行测试时都会调用setup()方法。所以一个@thing将被另一个覆盖 此外,我发现您不能为测试用例的执行假定特定的顺序;通常(可能一直?)测试从最后一个运行到第一个,就像本例中的情况一样。因此,我的对象在设置中的状态不会通过测试方法持续存在?正确。您的设置方法将在测试夹具中的每个测试方法之前调用。因此,在运行这些测试用例时列出所有调用将是1。设置2。测试

不同之处在于,在第二个测试中,您没有调用@thing.set\u stuff。

我对test::Unit的熟悉程度不如RSpec,但我相信每次运行测试时都会调用setup()方法。所以一个@thing将被另一个覆盖


此外,我发现您不能为测试用例的执行假定特定的顺序;通常(可能一直?)测试从最后一个运行到第一个,就像本例中的情况一样。

因此,我的对象在
设置中的状态不会通过测试方法持续存在?正确。您的设置方法将在测试夹具中的每个测试方法之前调用。因此,在运行这些测试用例时列出所有调用将是1。设置2。测试设置3。拆卸4。设置5。在其他测试6中进行测试。拆卸安装和拆卸都是可选的。你不需要有这些,在你的情况下,你只定义了设置,这是完全好的。
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