Why does running a Test::unit test in irb work so weirdly?

Discussion in 'Ruby' started by Peter Recore, Feb 16, 2008.

  1. Peter Recore

    Peter Recore Guest

    Why can't I run a Test::Unit::TestCase from IRB and have it run before I
    quit?
    I have found this problem mentioned by others. For an example, see this
    tutorial about testing:

    http://www.nullislove.com/2007/11/14/testing-in-rails-part-1-unit-testing-in-ruby/

    >irb --simple-prompt
    >> require 'test/unit'

    => true
    >> class FirstTests < Test::Unit::TestCase
    >> def test_addition
    >> assert(1 + 1 == 2)
    >> end
    >>
    >> def test_subtraction
    >> assert(1 - 1 == 2)
    >> end
    >> end

    => nil
    >> quit

    Loaded suite irb
    Started
    F
    Finished in 0.00119 seconds.

    The author mentions that a quirk of irb makes this happen but doesn't
    say what the quirk is:

    "When we finished the definition, nothing happened. When we exited IRB,
    then our tests ran. That’s a characteristic of using IRB for our tests
    and won’t be significant as we move on."

    Thanks for any insight you have.
    --
    Posted via http://www.ruby-forum.com/.
     
    Peter Recore, Feb 16, 2008
    #1
    1. Advertising

  2. On Feb 16, 2008 11:35 AM, Peter Recore <> wrote:
    > Why can't I run a Test::Unit::TestCase from IRB and have it run before I
    > quit?


    You can, you just have to explicitly tell it to run. Normally, you
    don't explicitly run Test::Unit tests, you simply define them and then
    they run automagically when ruby exits, because the Test::Unit
    library, when it is loaded, loads an at_exit routine that will (unless
    something has told it not too) run the tests that have been defined.
    Its not really an IRB quirk that stops them from running until you
    exit, its just that when you run a script with unit tests
    "standalone", you don't realize that the tests are run when it is
    exiting. With IRB, you just notice what is going on regularly when you
    use Test::Unit.

    The RDoc for Test::Unit gives this example of how to explicitly run a test case:

    require 'test/unit/ui/console/testrunner'
    Test::Unit::UI::Console::TestRunner.run(TC_MyTest)
     
    Christopher Dicely, Feb 16, 2008
    #2
    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. RJN
    Replies:
    1
    Views:
    678
    Curt_C [MVP]
    Sep 24, 2004
  2. Mr. SweatyFinger
    Replies:
    2
    Views:
    2,076
    Smokey Grindel
    Dec 2, 2006
  3. Muddy Coder

    Why WTK behaved weirdly?

    Muddy Coder, Jul 29, 2008, in forum: Java
    Replies:
    0
    Views:
    297
    Muddy Coder
    Jul 29, 2008
  4. timr
    Replies:
    2
    Views:
    170
  5. Cain
    Replies:
    3
    Views:
    102
Loading...

Share This Page