In article <20030401183531.GK24880 / atdesk.com>,
Paul Brannan  <pbrannan / atdesk.com> wrote:
>I don't know if I've asked this on this list before or only on irc (I
>can't find an earlier post on the subject, so I appologize if I'm asking
>this a second time; I don't remember the answer).
>
>I have a number of tests that create some object.  The tests are not
>unit tests, but I am using a unit test framework (RUNIT or Test::Unit)
>to write the tests.  This object is expensive (time-wise) to create, and
>I would like to share the object between my tests.  If I write this:
>
>  class MyTest < Test::Unit::TestCase
>    def setup
>      @f = Foo.new
>    end
>
>    def test_1
>    end
>
>    def test_2
>    end
>  end
>
>then @f gets constructed twice; once for each instance of MyTest.
>
>I'm currently doing this instead:
>
>  $f = Foo.new
>
>  class MyTest < Test::Unit::TestCase
>    def setup
>      @f = $f
>    end
>
>    def test_1
>    end
>
>    def test_2
>    end
>  end
>
>but surely there has to be a better way!  What can I do?
>

What if you make it a class variable instead?
Something like:

class MyTest < Test::Unit::TestCase
  @@f = Foo.new
  
  def test1
  ... do stuff with @@f
  end

  def test2
  ... do stuff with @@f
  end
end


Phil