[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

test unit with ARGV input

Brad Tilley

3/23/2006 8:24:00 PM

I can't get test/unit to work with command line scripts that take user
input via ARGV. Any tips on this? I continually get 'initialize': wrong
number of arguments (0 for 1) (ArgumentError) that go back to my
initialize method which is simply this:

def initialize
super
end
3 Answers

skhisma

3/23/2006 8:41:00 PM

0

Not sure from what you gave but are you calling TestCase's initialize
when you call super? Because that takes one argument which is the name
of the method being tested. (I could be completely wrong here i
haven't tried too many off the wall things with test/unit)

Ross Bamford

3/23/2006 8:43:00 PM

0

On Fri, 2006-03-24 at 05:28 +0900, rtilley wrote:
> I can't get test/unit to work with command line scripts that take user
> input via ARGV. Any tips on this? I continually get 'initialize': wrong
> number of arguments (0 for 1) (ArgumentError) that go back to my
> initialize method which is simply this:
>
> def initialize
> super
> end

(I assume this is in a testcase class?)

Test::Unit::TestCase#initialize requires one argument, the name of the
test being run. For each test method, a new instance is used. You would
need to do:

def initialize(name)
super(name)
end

You could omit (name) from the super call (it assumes the same arguments
anyway) but I prefer to be explicit.

All that said, you should generally handle custom initialization for
your tests from the 'setup' method, which is called before each test is
run.

As a general tip, whenever you have a situation like this you can
temporarily do:

def initialize(*args)
p args
super(*args)
end

To see what you're supposed to be dealing with.

--
Ross Bamford - rosco@roscopeco.REMOVE.co.uk



Brad Tilley

3/23/2006 8:50:00 PM

0

Ross Bamford wrote:
> Test::Unit::TestCase#initialize requires one argument, the name of the
> test being run. For each test method, a new instance is used. You would
> need to do:
>
> def initialize(name)
> super(name)
> end
>
> You could omit (name) from the super call (it assumes the same arguments
> anyway) but I prefer to be explicit.
>
> All that said, you should generally handle custom initialization for
> your tests from the 'setup' method, which is called before each test is
> run.

OK, I got it working... I'm new to test unit... this was my first go at
it. It's working now. Thank you both for the info!