From: Johan Holmberg Date: 2003-06-19T20:22:25+09:00 Subject: Test::Unit: assert in loop ? Hi ! Sometimes I find it convenient to have some of my unit tests table-driven, rather than just straight lines of code. An example: require 'test/unit' class TC_basic < Test::Unit::TestCase @@table = [ [1, 6, 7], [8, 3, 11], # is ok [100, 20, 120], [-10, 20, 11], # will cause error ] def test_plus for a, b, sum in @@table assert_equal( sum, a+b ) end end end The problem I'm having is that when an error occur, it is hard to tell which iteration that caused the error. The example above gives the error: Loaded suite TC_table_driven Started F Finished in 0.0082 seconds. 1) Failure!!! test_plus(TC_basic) [TC_table_driven.rb:13]: <11> expected but was <10> 1 tests, 4 assertions, 1 failures, 0 errors It is impossible for me to tell which entry in @@table that caused the error. I don't know if there is some other way I could have written my tests to see this ? If not, I think one way for Test::Unit to handle this better would be to indicate which of all calls to 'assert_equal' on line 13 that caused the error (the first call, the second, the third, ....). (some of the unit-test-modules for Perl does it that way) I'm running (almost) the latest Test::Unit from Rubys CVS-archive. /Johan Holmberg