Brian Candler
3/29/2007 5:13:00 AM
On Thu, Mar 29, 2007 at 06:23:14AM +0900, Matt Berney wrote:
> I have a test case, based on the Test::Unit::TestCase. How does one pass
> data to the test in such a way that the test can be run multiple times
> with different input.
>
> For example:
>
> class TC_CreateOrder < Test::Unit::TestCase
> def test_NewOrder
> assert "order successful"
> end
> end
>
> Now, I want to be able to generate a new order for various order types,
> (TYPE1, TYPE2, TYPE3, etc.)
>
> class TS_OrderTests
> def self.suite
> suite = Test::Unit::TestSuite.new
> suite << TC_CreateOrder.suite # TYPE1 goes here
> suite << TC_CreateOrder.suite # TYPE2 goes here
> suite << TC_CreateOrder.suite # TYPE3 goes here
> return suite
> end
> end
>
> Test::Unit::UI::Console::TestRunner.run(TS_OrderTests)
If it's only one test method, you can factor it out in the class:
class TC_CreateOrder < Test::Unit::TestCase
def do_test(t)
.. process t
end
def test_type1
do_test(TYPE1)
end
def test_type2
do_test(TYPE2)
end
def test_type3
do_test(TYPE3)
end
end
Otherwise, how about:
class TC_CreateOrder1 < TC_CreateOrder
FIXTURE = TYPE1
end
class TC_CreateOrder2 < TC_CreateOrder
FIXTURE = TYPE2
end
class TC_CreateOrder3 < TC_CreateOrder
FIXTURE = TYPE3
end
(I'm not sure how you'd prevent the base test TC_CreateOrder being run)
Regards,
Brian.