what runs when running tests?

K

kelly

I guess I'm still learning ruby.

While looking through the test code I realized I don't see what
actually _runs_.

My tests extend Test::Unit::TestCase, and define tests as

def test_sometestname
# some testing stuff
end

I scanned Test::Unit::TestCase and I see a bunch of function
definitions, but I don't see what runs. I guess I'm looking for a
method or piece of code that starts running, initializes things, finds
the test_* test methods and starts running them.

It's probably staring me in the face. Please point it out to me.

Thank you.

-Kelly
 
A

Austin Ziegler

I guess I'm still learning ruby.

While looking through the test code I realized I don't see what
actually _runs_.

A TestRunner.

See the files in lib/1.8/test/unit for more information if you want to
understand Test::Unit.

-austin
 
L

Lyle Johnson

I scanned Test::Unit::TestCase and I see a bunch of function
definitions, but I don't see what runs. I guess I'm looking for a
method or piece of code that starts running, initializes things, finds
the test_* test methods and starts running them.

To expand on Austin's answer just a little: I think the magic that
you're looking for is at the tail end of unit.rb, in the
lib/1.8/test/unit directory of the standard library. Test::Unit takes
advantage of the at_exit() method to register a little bit of code
that invokes the Test::Unit AutoRunner class right before the
interpreter exits.
 
K

kelly

Thanks.

Here is what I've learned so far:

I'm testing rails code. The generated rails test stubs have this line:

require File.dirname(__FILE__) + '/../test_helper'

app/test/test_helper.rb contains this line:

require 'test_help'

lib/ruby/gems/1.8/rails-1.1.6/lib/test_help.rb contains this line:

require 'test/unit'

lib/ruby/1.8/test/unit.rb contains these lines:

at_exit do
unless $! || Test::Unit.run?
exit Test::Unit::AutoRunner.run
end
end

I think this is the magic that runs the tests.

-Kelly
 
K

kelly

Lyle,

Thanks very much.

I see the code you refer to. Now I wonder why it is done using the
at_exit method -- seems a little obtuse to me.

My original question has been answered. Thanks again.

-Kelly
 
B

Bret Pettichord

I see the code you refer to. Now I wonder why it is done using the
at_exit method -- seems a little obtuse to me.

In Python's unit testing framework, you have to explicitly include
this code in every one of your test files. It's a real pain. Using the
at_exit hook in Ruby makes your unit tests cleaner.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top