From: Pit Capitain Date: 2007-01-11T17:40:44+09:00 Subject: Re: Trouble with executing discrete testcase functions within a Test::Unit::TestCase class 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