Kp schrieb:
> Yes, the 'functions' I'm talking about are not the functions that will
> automatically be executed, and their names don't start with 'test...'.
> 
> But since they are within the Test::Unit:TestCase class, they have 
> access to
> methods such as 'assert' etc.
> 
> What I need is a way to access and run these functions from an external
> program (a different .rb file). I don't want these functions to be run
> automatically as unit-testing tests, as I'm using them to test 
> functionality
> of a web-based app using the Selenium-RC tool.
> 
> Hope I was clearer here... much thanks for your reply.

Kp, why do you put your methods in a subclass of Test::Unit::TestCase? 
If all you need are the assertion methods you can do something like this:

   require "test/unit/assertions"

   class C
     include Test::Unit::Assertions
     def check_successor a, b
       assert_equal a, b.succ
     end
   end

   c = C.new
   c.check_successor 2, 1
   c.check_successor 3, 1 rescue puts $!

   # => <3> expected but was
   # => <2>.

This way the automatic test runner of test/unit isn't run.

If you have problems calling those methods "from an external program", 
maybe you should look at the #send method. Continuing the code above:

   methods_to_run_with_args = [
     [ "check_successor", "b", "a" ],
     [ "check_successor", "c", "a" ],
     [ "check_successor", 3, 2 ],
     [ "check_successor", 4, 2 ],
   ]

   methods_to_run_with_args.each do |name, *args|
     begin
       print "running #{name} with #{args.inspect}: "
       c.send name, *args                            # <<< here is c.send
     rescue Test::Unit::AssertionFailedError
       puts "failed"
     rescue Exception
       puts "error"
     else
       puts "ok"
     end
   end

   # => running check_successor with ["b", "a"]: ok
   # => running check_successor with ["c", "a"]: failed
   # => running check_successor with [3, 2]: ok
   # => running check_successor with [4, 2]: failed

Sorry if I told you things you already know. Feel free to ask again if 
this doesn't answer your question.

Regards,
Pit