Test::Unit Equivalent of JUnit @AfterClass

Discussion in 'Ruby' started by Patrick Joyce, Nov 8, 2007.

  1. Hey,

    Does anyone know a way to do the equivalent of @AfterClass in
    Test::Unit? I need to execute some code once after ALL the test_*
    methods in a Test::Unit::TestCase have run (teardown runs after EACH
    method).

    The reason I need to do this is that Rails leaves old fixture data in
    the DB after each TestCase is run. This just doesn't seem right to me,
    as I think each TestCase should start with the same state, but that is
    another issue. The immediate problem is that this can cause tests to
    fail if there are foreign key constraints. For example:

    TestCase1 < Test::Unit::TestCase
    fixtures :testa, :testb
    end

    TestCase2 < Test::Unit:TestCase
    fixtures :testa
    end

    If testb has a foreign key that depends upon testa, the second
    TestCase will fail since it will only try to delete from table testa
    and there are records in table testb that depend on testa.

    Cliff Moon of PhillyOnRails wrote a plugin
    (http://agilewebdevelopment.com/plugins/foreign_key_fixtures) to solve
    this problem, but the svn repository seems to be down.

    Another note: I only noticed this when setting up my cruisecontrol.rb
    for my project. The normal "rake test" task sets up the Test DB schema
    from schema.rb which ignores foreign keys. So if you have foreign keys
    in your DB be aware that there is a good chance you are running your
    tests without them.

    Any ideas?

    - Patrick Joyce
    --
    Posted via http://www.ruby-forum.com/.
     
    Patrick Joyce, Nov 8, 2007
    #1
    1. Advertising

  2. Patrick Joyce

    Ryan Davis Guest

    On Nov 7, 2007, at 21:55 , Patrick Joyce wrote:

    > The reason I need to do this is that Rails leaves old fixture data in
    > the DB after each TestCase is run. This just doesn't seem right to me,
    > as I think each TestCase should start with the same state, but that is
    > another issue. The immediate problem is that this can cause tests to
    > fail if there are foreign key constraints. For example:


    No, it isn't another issue... it is bug 2404 in the rails bug db.

    http://dev.rubyonrails.org/ticket/2404
     
    Ryan Davis, Nov 8, 2007
    #2
    1. Advertising

  3. Ryan Davis wrote:

    > No, it isn't another issue... it is bug 2404 in the rails bug db.
    >
    > http://dev.rubyonrails.org/ticket/2404


    Thanks, I don't know how I missed that ticket in all my searching.

    How did you end up working around the problem? Did you use the initial
    "nuke_fixtures" patch? Did you add all the fixtures with foreign keys to
    each test? (that looks like the easiest solution, but just doesn't seem
    right)
    --
    Posted via http://www.ruby-forum.com/.
     
    Patrick Joyce, Nov 8, 2007
    #3
  4. On Nov 8, 12:39 am, Ryan Davis <> wrote:
    > On Nov 7, 2007, at 21:55 , Patrick Joyce wrote:
    >
    > > The reason I need to do this is that Rails leaves old fixture data in
    > > the DB after each TestCase is run. This just doesn't seem right to me,
    > > as I think each TestCase should start with the same state, but that is
    > > another issue. The immediate problem is that this can cause tests to
    > > fail if there are foreign key constraints. For example:

    >
    > No, it isn't another issue... it is bug 2404 in the rails bug db.
    >
    > http://dev.rubyonrails.org/ticket/2404


    It's our favorite bug Ryan!

    Yep, going OT here...

    That bug alone really made my Rails test suite suffer for an existing
    app. I don't even try to implement FK's at the database layer any more
    with Rails as a result.

    I wonder if Merb fixed this...

    Regards,

    Dan
     
    Daniel Berger, Nov 8, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Edvard Majakari
    Replies:
    4
    Views:
    706
    Edvard Majakari
    Feb 25, 2005
  2. VvanN
    Replies:
    5
    Views:
    512
    Phlip
    Apr 28, 2006
  3. Bill David
    Replies:
    2
    Views:
    284
    Arne Vajhøj
    Jun 18, 2008
  4. Bill Mosteller
    Replies:
    0
    Views:
    249
    Bill Mosteller
    Oct 22, 2009
  5. timr
    Replies:
    2
    Views:
    179
Loading...

Share This Page