From: Mark Volkmann Date: 2006-03-24T05:46:37+09:00 Subject: Re: Inheritance Question On 3/23/06, David Solis wrote: > Hello, > > I'm having difficulty understanding inheritance in this case. In the > program below, I'm inheriting from other class in this program to inherit from My > goal is to be able to make assertions in both classes. > > If a run the program as written below, it works. > > require 'test/unit' > require 'test/unit/ui/console/testrunner' > > class TC_MyTest < Test::Unit::TestCase > def test_myMethod > puts 'test 1' > assert(true, 'test 1') > @test = TC_MyClass.new() > @test_new = @test.test_myTestCase > end > End > > class TC_MyClass > def initialize > end > def test_myTestCase > puts 'test 2' > #assert(true, 'test 2') > puts 'test 3' > puts 'test 4' > end > end > > But if try to do this, I get an error: > > class TC_MyTest < Test::Unit::TestCase > def test_myMethod > puts 'test 1' > assert(true, 'test 1') > @test = TC_MyClass.new() > @test_new = @test.test_myTestCase > end > End > > class TC_MyClass < Test::Unit::TestCase > def initialize > end > def test_myTestCase > puts 'test 2' > assert(true, 'test 2') > puts 'test 3' > puts 'test 4' > end > end > --------------------- > c:/ruby/lib/ruby/1.8/test/unit/testcase.rb:51:in `initialize': wrong > number of arguments (1 for 0) (ArgumentError) You don't need the initialize method in TC_MyClass. Delete that and see if it works. There's still something strange going on here though. Why do you want to put asserts in the class being tested? Normally all the asserts go in the class doing the testing. Also, normally the classes being tested and the test classes are in separate source files. -- R. Mark Volkmann Object Computing, Inc.