Test unit with ARGV input


#1

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


#2

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.


#3

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)


#4

Ross B. wrote:

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!